2015-10-20 3 views
1
table: A 
----------- 
value 
1 
2 
3 

sub-query: B 
----------- 
value 
2 

Мне нужно (A - B).Вычесть строки из таблицы, используя подзапрос, который может быть пустым

Следующий запрос работает, когда B не пуст. Выход = (1,3), как ожидалось.

SELECT * FROM A 
JOIN B 
ON (A.value != B.value) 

Однако, когда суб-запрос В пусто, то РЕГИСТРИРУЙТЕСЬ делает пересечение с пустым В, а на выходе результат в виде пустой-набор.

И если я использовать LEFT JOIN, он не вычесть строку, содержащую значение 2 из таблицы А.

Можно ли написать один запрос для (A - B), независимо от того, является ли пустым В или не.

ответ

2
SELECT A.* 
FROM A 
LEFT JOIN B 
ON A.value = B.value 
WHERE b.value IS NULL 
+0

Это было быстро ... и оно отлично работает. Благодарю. Я буду принимать его как ответ после обязательных 8 минут. –

+0

Добро пожаловать! Удачи с вашим проектом! :-) – Alex

Смежные вопросы