所以我是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

10-08 17:26