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

MySQL查询作者书籍数量结果排序异常问题求助

问题分析

你的查询已经正确统计了每个作者的书籍数量(包括无关联书籍的作者显示0),但排序不符合预期的原因是:当书籍数量相同时,你使用了作者姓名的升序排序,而预期需要的是降序排序。

当前ORDER BY books DESC, A.name中,A.name默认按升序排列,导致:

  • 书籍数量为1时,首字母H的Herman会排在M的Miguel前面;
  • 书籍数量为0时,首字母M的Mark会排在S的Stephen前面。

这和你的预期顺序正好相反,预期要求相同数量的作者按姓名降序排列。

修改后的查询语句
SELECT A.name AS name, COUNT(B.id) AS books
FROM Authors A
LEFT JOIN Books B ON A.id = B.author_id
GROUP BY A.id, A.name  -- 同时按id分组,避免同名作者被错误合并
ORDER BY books DESC, A.name DESC;
补充说明
  1. 将ORDER BY的第二个条件改为A.name DESC,即可实现相同书籍数量下的姓名降序排序,完全匹配预期结果;
  2. 建议GROUP BY同时包含A.id和A.name:id是Authors表的主键,能确保即使存在同名作者,也不会被错误合并统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:50:08