Теоретически, вы можете использовать как NOT IN, так и NOT EXISTS как часть одного и того же запроса, возможно, в подзапросе?Можете ли вы использовать NOT IN и NOT EXISTS в том же запросе?
ответ
Да, вы можете.
WHERE EXISTS (SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type) and stores.store_type NOT IN(...);
Почему нет ..
CREATE TABLE Test9 (ID int)
INSERT INTO Test9 values (1), (2), (3), (4)
SELECT *
FROM test9
WHERE id NOT IN (1)
AND EXISTS (SELECT 1 FROM test9 WHERE id = 1)
Конечно, вы можете, но быть осведомлены о различиях между как в отношении пустой (NULL) атрибуты. Там вы можете получить смешанные результаты. Когда подзапрос возвращает хотя бы один нуль, NOT IN не будет соответствовать никаким строкам.
Причины этого можно найти, посмотрев детали того, что на самом деле означает операция NOT IN.
Скажем, для целей иллюстрации, что существуют 4 строки в таблице называемые т, есть столбец с именем ID со значениями 1..4
WHERE SomeValue NOT IN (SELECT AVal FROM t)
эквивалентно
WHERE SomeValue != (SELECT AVal FROM t WHERE ID=1)
AND SomeValue != (SELECT AVal FROM t WHERE ID=2)
AND SomeValue != (SELECT AVal FROM t WHERE ID=3)
AND SomeValue != (SELECT AVal FROM t WHERE ID=4)
Давайте далее говорят, что AVal NULL, где ID = 4. Следовательно, что! = сравнение возвращает UNKNOWN. В логической таблице истинности для AND указано, что UNKNOWN и TRUE UNKNOWN, UNKNOWN и FALSE FALSE. Нет значения, которое может быть AND с UNKNOWN для получения результата TRUE
Следовательно, если любая строка этого подзапроса возвращает NULL, весь оператор NOT IN будет оценивать либо FALSE, либо NULL, и никакие записи не будут возвращены
Обратите внимание на сообщение this за дополнительной информацией.
- 1. Можете ли вы использовать .filter и .get в том же запросе для Django?
- 2. Можете ли вы использовать EXISTS с OR в SQL?
- 3. Можете ли вы использовать переменные и необязательные аргументы в одном и том же sass mixin?
- 4. Использовать результат запроса в том же запросе?
- 5. Использовать значение запроса в том же запросе
- 6. Можете ли вы использовать как сильные, так и сохранить в том же объявлении свойства?
- 7. Можете ли вы использовать .nextInt() для Java.util.Random и Java.util.Scanner в том же классе?
- 8. Использовать псевдонимы полей в том же запросе?
- 9. Можете ли вы использовать более одного случая в запросе MySQLi?
- 10. Кто использовать $ or и $ в том же запросе в Meteor
- 11. Можете ли вы использовать один и тот же плагин дважды?
- 12. использовать UPDATE и INSERT в том же запросе
- 13. Возможно использовать операторы «$ ne» и «$ elemMatch» в том же запросе?
- 14. Таблица MySQL -> Можете ли вы вернуть одну и ту же строку несколько раз в том же запросе?
- 15. Должен ли я использовать EXISTS или IN
- 16. Невозможно использовать группу заново (перегородкой) в том же запросе?
- 17. Можете ли вы назначить переменную в SELECT, а затем использовать ее позже в том же SELECT?
- 18. LAST_INSERT_ID() в том же запросе
- 19. Получить два значения в одном и том же запросе linq
- 20. В Grails вы можете использовать вызовы класса sql.newInstance и Domain в том же методе?
- 21. как использовать INNER JOIN и IN Предложение в том же запросе
- 22. Как использовать getOutputStream() и getWriter() в том же запросе сервлета?
- 23. Можете ли вы использовать итератор в массиве?
- 24. Можете ли вы использовать @model как @ViewBag?
- 25. Использование IN и EXISTS в SQL
- 26. Невозможно использовать EXISTS в запросе cypher
- 27. Можете ли вы использовать ForEach в словаре?
- 28. Можете ли вы смешать ClojureScript и JVM-Clojure в том же проекте?
- 29. Можете ли вы установить subclipse и subversive в том же Eclipse?
- 30. Верх и низ в том же запросе?
Да, вы можете, SELECT * FROM mytable WHERE col NOT IN ('a', 'b') И НЕ СУЩЕСТВУЕТ (SELECT * FROM anothertable WHERE anothertable.col2 = mytable.col2) ' –