根据特定字母计算有多少首歌曲

时间:2014-02-28 19:25:00

标签: mysql

我有一张包含歌曲的表格。我想根据特定的字母计算出有多少首歌曲。

该表称为“歌曲”,列名称称为“名称” 字母表由我自己给出,因为我正在处理一个西班牙语字母表,其中包含字母表中的字符,如'ñ','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

我如何实现这一目标?

请原谅我,英语不是我的第一语言。如果我不清楚,我会尽力回答你的所有问题。 感谢

1 个答案:

答案 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