Я использую SQL (SQL Server, PostgreSQL) более 10 лет, и до сих пор я никогда не использовал ключевые слова ANY/SOME
и ALL
в моем производственном коде. Всю ситуацию, с которой я столкнулся, я мог уйти с IN
, MAX
, MIN
, EXISTS
, и я думаю, что это более читаемо.
Например:
-- = ANY
select * from Users as U where U.ID = ANY(select P.User_ID from Payments as P);
-- IN
select * from Users as U where U.ID IN (select P.User_ID from Payments as P);
или
-- < ANY
select * from Users as U where U.Salary < ANY(select P.Amount from Payments as P);
-- EXISTS
select * from Users as U where EXISTS (select * from Payments as P where P.Amount > U.Salary);
Используя ANY/SOME
и ALL
:
Итак, вопрос: я что-то упускаю? есть ли какая-то ситуация, когда ANY/SOME
и ALL
блестят над другими решениями?