sql - 转换为相关子查询
问题描述
我被要求找到在 SSMS 中使用相关子查询编写超过 1500 页的作者。我可以使用连接轻松完成此操作(以下查询有效),但当我尝试将其转换为相关子查询时无法完成此工作。甚至可能吗?t.SQL新手。
select a.au_id, a.au_lname, a.au_fname, sum(t.pages) as tot_pages
from authors a
join title_authors ta
on ta.au_id = a.au_id
join titles t
on t.title_id = ta.title_id
group by a.au_id, a.au_lname, a.au_fname
having sum(t.pages) > 1500
解决方案
鉴于问题的性质,我不会使用exists
,而是进行简单的比较:
SELECT a.*
FROM authors a
WHERE (SELECT SUM(t.pages)
FROM title_authors ta JOIN
titles t
ON ta.title_id = t.title_id
WHERE ta.author = a.au_id
) > 1500;
甚至:
SELECT a.*
FROM authors a
WHERE (SELECT SUM(t.pages)
FROM titles t
WHERE t.title_id IN (SELECT ta.title_id
FROM title_authors ta
WHERE ta.author = a.au_id
)
) > 1500;
这设法将两个相关的子查询放入 answer 中。. . 诚然,以可读性为代价。
推荐阅读
- db2 - 从 CURRENT_TIMESTAMP (DB2) 中减去 HOURS
- python - 使用 request.GET 在 python 中获取多个 url
- swift - 无法使用 xcode 为我的 iphone 应用程序打开 PDF
- ssrs-2014 - 错误:数据集的查询执行失败。我的查询对我的数据集 SSRS 是否正确?
- java - Java 不兼容类型:int 无法转换为 int[]
- javascript - IndexedDB 事务中的循环
- machine-learning - YOLO(暗网):如何检测整个目录的图像?
- json - jq非规范化嵌套字段
- flutter - 在 Flutter 中通用将颜色设置为 App 中的 Text Widget,而无需每次都提及 Widget 内部的主题
- python - 如何点击img元素?