YaKotikTvoy
@YaKotikTvoy
Стьюдик

Почему не работает !=ALL?

Select * 
from Employees
where [Employee ID] !=ALL (/*Вот тут на 90 ругается*/ 90, NULL);--
spoiler
633c4f2456497108229005.png

с not in всё работает.
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Правильно ругается. Документацию читать надо, а не сомнительные комментарии к ней.

Выражение при использовании операторов ALL, SOME, ANY может быть только и исключительно набором данных, а не набором скалярных значений. Применительно к SQL Server - только подзапросом. Можно, конечно, попробовать использовать функцию, возвращающую набор данных, но сильно сомневаюсь, что получится.

ALL (Transact-SQL)

Так что синтаксически правильно так:
Select * 
from Employees
where [Employee ID] != ALL ( SELECT 90 UNION SELECT NULL );

Хотя и неправильно логически - наличие в списке NULL однозначно приведёт к пустому набору данных.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы