2
タイトルはちょっと奇妙に聞こえるが、私がしようとしていることは次のとおりである。2番目のテーブルが一致しているが、WHEREの一致がないときにJOINを書く方法
:a :c A.a B.d
-- -- --- ---
1 10 --> 1 Z
1 20 --> 1 NULL
2 any --> empty set
:私は次の置換を行う場合、私はこれらの答えを取得したい、今すぐ
SELECT A.a, B.d FROM A
some kind of JOIN B ON A.a = B.a
...WHERE A.a = :a AND B.c = :c
:テーブル
A.a A.b B.a B.c B.d
--- --- --- --- ---
1 X 1 10 Z
2 Y 1 30 W
私は次のようにソートの見えるかもしれないクエリをしたい考えます
私はMySQLを使用しているので、FULL JOINは問題ありません。
を解決していない私は私がは自分自身をそれを働いたと思っていた:
SELECT A.a, CASE WHEN B.c = :c THEN B.d ELSE NULL FROM A
LEFT JOIN B ON A.a = B.a
WHERE A.a = :a AND B.c = :c
をしかし、それが与える:
:a :c A.a B.d
-- -- --- ---
1 20 --> 1 NULL
1 10
ありがとうございます、そのバージョンはすべてのテスト条件で動作するようです! –