sql - SQL:需要“全部”解释
问题描述
与操作员一起使用时,我试图将头绕在“全部”上。
我目前的理解是内部查询返回一个子集,外部查询在该子集上使用 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 子句中使用,即使这不是我们想要的因为我们只想要最大的数字。
解决方案
询问:
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 必须大于或等于。
推荐阅读
- python - 使用 shell 或 Python 添加 XML 元素
- matplotlib - 如何在 Python 中使用 DataFrame 绘制烛台图?
- java - 仅在某些异步执行完成后如何执行代码?
- java - 运行项目时okhttp NoClassDefFoundError
- c# - 在 EF Core 中过滤“包含”实体
- gradle - Homebrew 不会安装任何东西,我也无法手动安装 gradle
- r - 给定参考字符串中的坐标,从长参考字符串中拼接字符串
- python - 使用 Pyinstaller 时缺少 Numpy 所需的依赖项
- javascript - 覆盖 VanillaJS 中的默认 keydown 事件
- c++ - Stroustrup 代码审查 - 编程原理 - Ch - 4 - 问题:3 - 错误:向量下标超出范围