我正在尝试简化这个 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