使用CONCAT与CASE语句无法正常工作

时间:2017-12-15 14:56:30

标签: mysql

我在MySQL中有一个名为' books'

的下表

enter image description here

我想要什么

我想选择author_lname以及每位作者撰写的书籍数量 i如果任何作者撰写的书籍数量为1则应显示作为1 Book,如果写的书数大于1,那么我想将单词Books与书面数量连接起来。

这是我试过的

为了达到这个目的,我尝试了以下查询

SELECT author_lname,
       CASE
          WHEN COUNT(*) = 1 THEN '1 Book'
          ELSE CONCAT(COUNT(*),' Books')
       END AS 'Book Count'
FROM books
       GROUP BY author_lname, author_fname;  

以上查询的结果

enter image description here

问题

正如您所看到的,查询的输出不是我想要的。请告诉我为什么我得到这个输出,我做错了什么以及如何获得所需的输出?

1 个答案:

答案 0 :(得分:1)

你错过了围绕CONCAT的演员阵容;)

SELECT author_lname,
   CASE
      WHEN COUNT(*) = 1 THEN '1 Book'
      ELSE CAST(CONCAT(COUNT(*),' Books') AS CHAR)
   END AS 'Book Count'
FROM books
   GROUP BY author_lname, author_fname;