2
標題聽起來有點奇怪,但我要做的事情如下。鑑於表如何在第二個表具有ON匹配但不匹配WHERE時寫JOIN
A.a A.b B.a B.c B.d
--- --- --- --- ---
1 X 1 10 Z
2 Y 1 30 W
我想要一個查詢,看起來有點像以下:
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 :c A.a B.d
-- -- --- ---
1 10 --> 1 Z
1 20 --> 1 NULL
2 any --> empty set
我正在使用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
謝謝,該版本似乎適用於我所有的測試條件! – 2012-04-12 07:20:28