我使用SQL(SQL Server,PostgreSQL)超过10年,但我从未在生产代码中使用过ANY/SOME
和ALL
关键字。我遇到的所有情况都可以通过IN
,MAX
,MIN
,EXISTS
得到解决,我认为它更具可读性。SQL:我们是否需要ANY/SOME和ALL关键字?
例如:
-- = 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
?
我在过去的13年中没有使用过它们。 –
我从来没有使用'EXCEPT'。我坚持'不存在' – joop
我完全同意这一点,我认为'EXCEPT'对于找到两个具有相同模式的表之间的差异很有用 –