SQLite双分组查询排序异常:按年份排序不生效问题
解决方案
问题分析
你的SQL语句存在两个核心问题:
- 列名不匹配:表中存储人员的列是
person,但你用了不存在的author列,导致分组和排序逻辑混乱。 - 排序优先级错误:要实现按年份升序的需求,
ORDER BY需将year设为第一排序条件。
正确SQL语句
SELECT person, year, COUNT(task) AS tasks FROM db GROUP BY person, year ORDER BY year ASC, person;
说明
- 列名修正:将
author替换为表中实际的person列,确保分组与选取的列一致。 - 计数优化:用
COUNT(task)统计任务数量更贴合需求(若允许task为空,可改用COUNT(*))。 - 排序逻辑:
ORDER BY year ASC, person先按年份升序排列,同一年份下再按人员名称排序,完全匹配你的预期结果。
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

