我有一张包含歌曲的表格。我想根据特定的字母计算出有多少首歌曲。
该表称为“歌曲”,列名称称为“名称” 字母表由我自己给出,因为我正在处理一个西班牙语字母表,其中包含字母表中的字符,如'ñ','l',....
结果应该是这样的:
alphabet total
---------------------------------
a 43
b 5
c 0 (or NULL)
d 34
....
n 25
ñ 7
我可以选择这首歌的第一个字母,并将它们分组以获得总数
SELECT LOWER(LEFT(name, 1)), COUNT(*)
FROM song
GROUP BY LOWER(LEFT(name, 1))
但是,如果没有以字母K开头的歌曲,它将不会显示在结果中,我想显示为0或NULL
我如何实现这一目标?
请原谅我,英语不是我的第一语言。如果我不清楚,我会尽力回答你的所有问题。 感谢
答案 0 :(得分:1)
可能有更快的方法,但这是一个。
创建一个带有letter
列的字母表,并添加所有字母。
然后在歌曲表中添加first_letter
列:
ALTER TABLE song ADD COLUMN first_letter VARCHAR(1);
UPDATE song
SET first_letter = LOWER(LEFT(name, 1))
然后查询两个表:
SELECT a.letter, count(s.name)
FROM alphabet a
LEFT JOIN song s ON (a.letter = s.first_letter)
GROUP BY a.letter