Что происходит, когда Вы делаете SQL-запрос где IN
пункт пуст?
Например:
SELECT user WHERE id IN ();
MySQL обработает это как ожидалось (то есть, всегда ложь), и в противном случае как мое приложение может обработать этот случай при создании IN
пункт динамично?
Вот другое изменение всегда ложного оператора для пустых списков, который сохраняет и логику и понятие фактического столбца в запросе.
Неправильный id in ()
может быть переписан в:
where id <> id;
Столь же неправильное отрицательное условие id not in ()
может быть преобразовано строительными нормами и правилами пользовательского запроса в:
where id = id;
Этот подход более безопасен, чем id not in (NULL)
, поскольку он не оценивает к ПУСТОМУ УКАЗАТЕЛЮ.
, Но остерегаются этого, это отфильтровало бы из результата строки где id is null
. Это можно считать функцией в некоторых случаях.
Espesially, полезный с комплексом, сложил логику создания запроса, где вложенный разработчик не знает, как получающийся подзапрос мог использоваться выше.
Если Вы используете тот запрос в приложении, и Вы передаете динамично список объектов к запросу, я не должен звонить в базу данных, чтобы сделать выбор с помощью невозможного значения, я должен возвратить пустой список, не звоня в запрос базы данных, непосредственно.
, поскольку это не имеет никакого смысла сделать запрос, который Вы знаете, это пусто прежде, чем назвать его.