与操作员一起使用时,我试图将自己包裹在“全部”周围。
我目前了解的是内部查询返回一个子集,外部查询在其上使用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子句中使用因为我们只想要最大的数字。
答案 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。