SELECT DISTINCT a.value
FROM a LEFT JOIN b
ON a.value = b.value
AND (b.field IS NULL OR b.field != 'my_string');
SELECT a.value
FROM a
WHERE a.value NOT IN
(SELECT value
FROM b
WHERE b.field = 'my_string');
Из того, что я читал, выполнение LEFT JOIN происходит быстрее. Но я также прочитал, что DISTINCT - это запах кода для неэффективного запроса. Как я могу определить, какой запрос лучше работает в худшем случае?Выбор строк не в другой таблице
EDIT: извините, id не является первичным ключом, это просто другое поле. Я заменю его на значение.
EDIT2: Похоже, что каждый человек положил трубку на мой первый запрос. Предположим, что это похоже на это. Разве логика не такая же?
SELECT DISTINCT a.value
FROM a LEFT JOIN b ON a.value = b.value
WHERE (b.field IS NULL OR b.field != 'my_string');
EDIT3: образец скрипки. http://sqlfiddle.com/#!2/500ea/1
EDIT4: Принятый ответ. http://sqlfiddle.com/#!2/500ea/8
ninjaed при написании такого же ответа +1 –
Вы правы. Спасибо. http://sqlfiddle.com/#!2/500ea/8 – Tuan