2013-07-05 47 views
0

這裏是我的查詢的時刻:過濾表,我做一個LEFT JOIN與

SELECT A.* 
FROM A 
LEFT JOIN B ON B.a_id = A.id 

現在,假設有其直接涉及BC。我想要做的是根據C篩選表B的記錄 - 我該怎麼做?我試着將過濾器在WHERE部分:

SELECT A.* 
FROM A 
LEFT JOIN B ON B.a_id = A.id 
LEFT JOIN C ON B.c_id = C.id 
WHERE C.id > 10 

的問題是,前面的queryalso篩選出表A的結果。我如何獲得我想要的結果?

回答

1

需要在把該過濾器聯接:

SELECT * 
FROM A 
LEFT JOIN 
(
    SELECT B.* 
    FROM B 
    INNER JOIN C ON B.c_id = C.id AND C.id > 10 
) AS B ON B.a_id = A.id 

它不會過濾掉A的結果。

+0

但它不會過濾掉B的結果。 – William

+0

修改了ans。爲此你必須使用子查詢。 –

+0

對你有幫助嗎? –