2016-07-29 117 views
0

我想在使用mysql「NOT IN」條件時連接兩個表。我遇到的問題是,如果左連接爲空,意味着沒有進入左連接,則mysql NOT IN運算符不起作用。mysql在使用NOT IN條件時左連接兩個表

這裏是一個例子。

SELECT PLAYERS.*, 
TYPES.GUEST_ID 

FROM PLAYERS 
LEFT JOIN TYPES ON TYPES.GUEST_ID = PLAYERS.GUEST_ID 
WHERE PLAYERS.ID = '1' AND TYPES.GUEST_ID NOT IN('1', '2') 

由於TYPES表中目前沒有匹配的行。 NOT IN運算符不起作用。有沒有解決方法?

+0

你想實現什麼? –

回答

1

使用IS NULL在:

SELECT PLAYERS.*, TYPES.GUEST_ID 
FROM PLAYERS 
    LEFT JOIN TYPES ON TYPES.GUEST_ID = PLAYERS.GUEST_ID 
WHERE TYPES.GUEST_ID NOT IN('1', '2') OR TYPES.GUEST_ID IS NULL 
+0

太棒了!這工作 – sam

0

把它放在on條款

SELECT PLAYERS.*, 
TYPES.GUEST_ID 
FROM PLAYERS 
LEFT JOIN TYPES ON TYPES.GUEST_ID = PLAYERS.GUEST_ID 
       AND TYPES.GUEST_ID NOT IN(1, 2) 
+0

感謝您的回覆。這也適用,但第一種解決方案對我的情況更好。 – sam