SQL:需要“ ALL”解释

时间:2019-06-12 20:22:21

标签: sql sql-server

与操作员一起使用时,我试图将自己包裹在“全部”周围。

我目前了解的是内部查询返回一个子集,外部查询在其上使用ALL,外部查询如何分辨每个子集

SELECT playerno, leagueno
FROM Players
WHERE playerno >= ALL(select playerno FROM Players WHERE leagueno IS NOT NULL)

我试图弄清楚它是如何工作的。内部查询返回例如(1,2,3),那么它如何知道playerno应该大于或等于3而不仅仅是2?我假设ALL表示将检查每个值,这也意味着不大于1或2的玩家就足以满足条件,因此即使不是我们想要的,也可以在WHERE子句中使用因为我们只想要最大的数字。

1 个答案:

答案 0 :(得分:2)

查询:

SELECT playerno, leagueno
FROM Players
WHERE playerno >= ALL(select playerno FROM Players WHERE leagueno IS NOT NULL)

等效于:

SELECT playerno, leagueno
FROM Players
WHERE playerno >= (SELECT MAX(playerno) FROM Players WHERE leagueno IS NOT NULL)
-- assumption: playerno is defined as NOT NULL

这意味着在定义联赛的每个Playerno中,playerno都必须大于或等于ge。