问答 百科手机端

SQL:需要'ALL‘解释

2023-06-23 14:37
提问开始:

当与操作符一起使用时,我试图把“All”理解为“All”。

我目前所理解的是内部查询返回一个子集,外部查询在该子集上使用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意味着检查每个值,这也意味着playerno大于1或2就足以满足条件,因此可以在WHERE-子句中使用,即使这不是我们想要的,因为我们只想要最大的数字。

回答开始:得票数 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。

热门