所以我是sql新手,我正在做这个查询,它应该打印出同一个作者写的书的数量(按authord分组,authord是一个整数),按书籍数量的降序排列,然后按authord本身写的书的数量的升序排列(整数)。问题是,出于某种原因,它也按降序打印authords。有人能解释我做错了什么吗?
SELECT AuthorID, COUNT(*)
FROM book
GROUP BY AuthorID
ORDER BY SUM(AuthorID) DESC, AuthorID ASC;
最佳答案
使用select中的值来完成所需的工作。首先按计数排序(*)[您的图书数量]降序,然后按作者升序。
SELECT AuthorID, COUNT(*)
FROM book
GROUP BY AuthorID
ORDER BY COUNT(*) DESC, AuthorID ASC;
你正在尝试引入一个全新的价值,
SUM(AuthorID)
,这不是你想要的。如果authorID是一个int值,则会显示出完全不同的内容。通过测试,您可能可以看到输出是什么,然后看看哪里出错了。SELECT AuthorID, SUM(AuthorID) AS test_col, COUNT(*)
FROM book
GROUP BY AuthorID