【发布时间】:2021-02-02 20:21:15
【问题描述】:
我正在尝试简化这个 SQL 查询(我用隐喻替换了真实的表名),主要是摆脱了内部查询,但我脑壳僵硬,想不出任何办法。
我的主要关注点(除了美观)是重负载下的性能
查询的目的是计算在保存图书的任何特定书架上找到的按类型分组的所有图书(因此内部查询有效地告诉了在哪个书架上计算图书)。
SELECT g.name, count(s.book_id) occurances FROM genre g
LEFT JOIN shelve s ON g.shelve_id=s.id
WHERE s.id=(SELECT genre_id FROM book WHERE id=111)
GROUP BY s.genre_id, g.name
【问题讨论】:
-
您的查询应该没问题,尽管
GROUP BY中不需要s.genre_id。我也迷失了s.id = b.genre_id。样本数据和期望的结果将阐明您想要做什么。
标签: sql join select inner-query