Not in sql
Автор Зияудин Абукаров задал вопрос в разделе Другие языки и технологии
SQL запрос, not in() и получил лучший ответ
Ответ от Михаил Губарев[гуру]
Оператор NOT IN в SQL используется для исключения строк, значения которых совпадают с любым значением из списка или результата подзапроса. Синтаксис простой: SELECT ... FROM table WHERE column NOT IN (value1, value2, ...) либо с подзапросом WHERE column NOT IN (SELECT other_column FROM other_table). Есть важный нюанс, о котором часто забывают: если в списке или в результате подзапроса встречается хотя бы одно значение NULL, условие NOT IN вернёт пустой результат. Происходит это потому, что любое сравнение с NULL даёт UNKNOWN, а не TRUE или FALSE, и вся конструкция перестаёт фильтровать строки. Решается это явным исключением пустых значений через WHERE other_column IS NOT NULL внутри подзапроса. Для больших наборов данных NOT IN часто работает медленнее альтернатив. Вместо него лучше использовать NOT EXISTS с коррелированным подзапросом или конструкцию LEFT JOIN с проверкой IS NULL у правой таблицы. Эти варианты обычно эффективнее, потому что оптимизатору проще построить план выполнения, особенно при наличии подходящих индексов, и они не страдают от проблемы с NULL.
$friends[0] и $friends[12] - откуда у вас эти массивы?
Дело в том что все данные по определению должны храниться в базе данных. Это лишает вас проблемы выбора алгоритма. Скажем, найти клиентов из города Москва но только таких у которых более 2-х заказов за месяц. Вы ищете тех у которых 3 и более заказов, потом делаете
select * from Customer where ID in (1,2,45,342,32,43,24,234,3)
и на этом "in" система бесится.
Сервер ждёт что вы отфильтруете более эффективным способом и не будете ему передавать целый массив значений для сравнений.
Сервер может только беситься, но правильные запросы он выполнять обязан. У меня нет под рукой сервера mySQL, чтобы прогнать Ваш запрос и указать на ошибку, если она имеет место быть. Почему бы Вам не запустить его самому и не сообщить нам поточнее, на что именно жалуетесь: на медленность или на незапускаемость?
Можно, конечно, попытаться "мысленно" прокомпилировать Ваш запрос, но, боюсь, mySQL все равно сделает это и быстрее, и лучше.
SQL запрос для удаления записей на основе двух таблиц
так
DELETE FROM A WHERE id NOT IN (SELECT id FROM B)
Александр
подробнее...
SQL запрос - Удалить дубликаты строк из таблицы (firebird)
например так
delete from ДИСК where КОД not in (
select min(КОД) from ДИСК group by
подробнее...
Можно ли в SQL сделать выборку не конкретных полей а типа "все кроме такого то"?
Если только прописать процедуру которая будет обрабатывать такой запрос а потом только вставлять в
подробнее...
Вопрос по Access 2007, как создать запрос значения из таблицы №2, которого не существует в таблице 1
не имеет значения 2007 аксес или 2.0
это всё sql
насчет exists не могу сказать ничего так
подробнее...
SQL-инъекция
а ты входные параметры фильтруешь?
на всякий:
function sqlcheck($var)
{
подробнее...
Помогите PHP СРОЧНО Fatal error: Class 'MYSQL' not found in Что делаешь?
Вообще-то в PHP класса MYSQL не существует. Есть классы mysqli и PDO. И есть устаревшая много лет
подробнее...
Чем прокси сервер отличается от VPN?Что безопаснее (надежнее анонимизирует)?
Технология Proxy обеспечивает соединение на так называемом «прикладном уровне» (или «уровне
подробнее...
Существуют ли в Delphi стандартные хэш-функции? Например, как MD5 в PHP.
Вот модуль, вычисляющий MD5 в Delphi. Полностью могу прислать по почте. Если надо - пиши ( :-))))
подробнее...
Что значит system error code:126
What Causes Error 126?
Error 126 is usually displayed at run time when some of the DLLs on
подробнее...