0

このクエリを考えると:

SELECT a, b FROM c WHERE a IN ('v1', 'v2', 'v3');

テーブルcに v1 と v2 の値があり、v3 の値がない場合、2 行の結果セットが得られます。すべてのターゲットの行を取得しながら、同じクエリ (または同じ結果が得られるクエリ) を実行する方法はありますか?

この場合、「v1」と「v2」の値を持つ 2 行と NULL を持つ 1 行の 3 つの行を受け取りたいと思います。

4

1 に答える 1

3

これが特定の RDBMS で機能するかどうかはわかりませんが、次のようにアプローチします。

select x.a, c.b
from (
  select 'v1' as a union all
  select 'v2' as a union all
  select 'v3' as a
) x
left outer join c on c.a = x.a

一時テーブルを作成し、それを使用して目的のテーブルに左結合します。

于 2012-10-25T18:52:36.580 に答える