You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询含无书籍店铺的COUNT()统计结果问题求助

修正MySQL SQL语句以显示无书籍的店铺

原SQL语句无法显示无书籍的店铺,核心问题在于使用了内连接关联BOOKSHELF表,这会过滤掉没有对应书架记录的店铺。以下是修正后的语句:

SELECT 
    a.id_store, 
    a.name_store, 
    b.name_location AS location, 
    COUNT(d.id_book) AS no_books
FROM STORE a
JOIN LOCATION b ON a.id_location = b.id_location
LEFT JOIN BOOKSHELF c ON a.id_store = c.id_store
LEFT JOIN BOOK d ON d.id_bookshelf = c.id_bookshelf
GROUP BY a.id_store, a.name_store, b.name_location;

关键修正说明:

  • 将JOIN BOOKSHELF c替换为LEFT JOIN BOOKSHELF c:左连接会保留所有STORE表的记录,即使店铺没有对应的书架,书架相关字段会以NULL填充,不会过滤掉店铺。
  • 补充分组字段:在MySQL严格模式下,SELECT中未使用聚合函数的字段必须出现在GROUP BY中,因此添加a.name_store和b.name_location保证语法合规。
  • 保留COUNT(d.id_book)统计书籍数:左连接下,无书籍时d.id_book为NULL,COUNT()会自动忽略NULL值,最终返回0,符合“无书籍显示0”的需求。

内容的提问来源于stack exchange,提问作者Lina Gonza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:15:35