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

基于给定User表与Book表,如何编写SQL查询获取指定统计结果?

嗨,这个需求很清晰,咱们直接来搞定对应的SQL查询~

首先,核心目标是统计每个userid在Book表中的记录条数(也就是你要的bookCount),最直接的写法就是对Book表按userid分组,再统计每组的行数:

SELECT COUNT(*) AS bookCount, userid
FROM Book
GROUP BY userid
ORDER BY bookCount DESC, userid ASC;

代码逻辑解释:

  • GROUP BY userid:把Book表的数据按用户ID划分成独立的组,每组对应一个用户的所有书籍记录
  • COUNT(*):统计每个组内的记录总数,用AS bookCount给统计结果指定别名,和你要的输出字段名匹配
  • ORDER BY:先按bookCount降序排列(让书籍数量多的用户排在前面),再按userid升序,完全匹配你给出的目标结果格式

如果你需要确保所有User表中的用户都被统计到(哪怕某个用户没有任何Book记录,也要显示bookCount为0),可以用左连接关联User表,这样逻辑更严谨:

SELECT COUNT(b.userid) AS bookCount, u.userid
FROM User u
LEFT JOIN Book b ON u.userid = b.userid
GROUP BY u.userid
ORDER BY bookCount DESC, u.userid ASC;

补充说明:

这里用COUNT(b.userid)而非COUNT(*),是因为左连接后,没有对应书籍记录的用户,b.userid会是NULL值,COUNT函数会自动忽略NULL,从而得到正确的0;如果用COUNT(*)会把NULL行也算入,得到错误的1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:19:46