У меня есть следующая таблица в MySQL, называемая "книги",
Я хочу выбрать author_lname
и количество книг, которые написал каждый автор, но если количество книг, написанных любым автором, равно 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;
Как вы можете видеть, вывод запроса - это не то, что я хочу. Пожалуйста, скажите мне, почему я получаю этот результат, что я делаю неправильно и как я могу получить желаемый результат?
Вам не хватает броска вокруг 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;
MySQL
и инструктор сделал то же самое, что и я, чтобы получить желаемый результат, и это сработало для него. Может ли это быть проблемой, связанной с другой версиейMySQL
? А также не могли бы вы объяснить причину, по которой нам нуженcast
вокругCONCAT
?