我使用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'對於找到兩個具有相同模式的表之間的差異很有用 –