2016-07-29 3 views
0

Я пытаюсь оставить join 2 таблицы при использовании условия mysql "NOT IN". Проблема, с которой я столкнулась, заключается в том, что если левое объединение равно null, то есть нет ссылки на левое соединение, оператор mysql NOT IN работает неправильно.mysql left join two tables while using NOT IN condition

Вот пример.

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