使用 MySQL 的书籍数量

问题描述 投票:0回答:1

我正在处理图书馆数据库,其中包含书籍和作者表。

Books
表的列:
id, name, year, author_id

的列
Authors
表:
id, name
.

编写一个查询来获取作者姓名及其书籍数量 已在图书表中。

请注意,有些作者没有任何与之相关的书籍。在 在这种情况下,结果需要包含他们的名字并以 0 作为 数数。结果中的计数列应称为书籍。

按书籍数量从最高到最低对结果进行排序。

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.name
ORDER BY books DESC, A.name;

我得到了结果,但不是预期的。 预期输出是:

name,books
F. Scott Fitzgerald,3
Jane Austen,3
William Shakespeare,2
Miguel de Cervantes,1
Herman Melville,1
Stephen King,0
Mark Twain,0

我得到的输出是:

name,books
F. Scott Fitzgerald,3
Jane Austen,3
William Shakespeare,2
Herman Melville,1
Miguel de Cervantes,1
Mark Twain,0
Stephen King,0
sql mysql database sql-server-data-tools
1个回答
0
投票

当您想按姓氏排序时,可以使用 SUBSTRING_INDEX

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.name
ORDER BY books DESC,SUBSTRING_INDEX(`name`, " ", -1)

这给了你

名字 书籍
简·奥斯汀 3
F。斯科特·菲茨杰拉德 3
威廉·莎士比亚 2
米格尔·德·塞万提斯 1
赫尔曼梅尔维尔 1
史蒂芬·金 0
马克·吐温 0
© www.soinside.com 2019 - 2024. All rights reserved.