我在Postgresql db中有一个用户列表,我想计算每封信有多少用户。
下面是SQL查询:
select chr(chars.letter + ascii('A')) as letter,
count(m.nome)
from generate_series(0, 25) as chars(letter)
left join merchant m on ascii(left(m.nome, 1)) = chars.letter + ascii('A')
group by letter
order by letter asc
(感谢this answer)
以下是PHPPGAdmin的结果:
既然我迁移到MySQL,我需要使用相同的查询,但是MySQL似乎不使用generate_series()。那么,怎样才能得到同样的结果呢?
最佳答案
所以假设您有一个表,其中至少有26条记录(也许information_schema.columns
也许?).
下面将生成所有大写字母:
SET @c := 64;
SELECT CAST(CHAR(@c := @c + 1) AS CHAR(1)) AS letter
FROM table_with_at_least_26_rows
LIMIT 26
;
要将上述内容嵌入到原始查询中,请将
SET @c := 64;
放在查询之前,然后将generate_series(0, 25) as chars(letter)
替换为( SELECT CAST ... LIMIT 26 ) chars
。请确保包含括号,因为它将使查询成为子查询。查询的SQL句柄:http://sqlfiddle.com/#!9/6efac/8
关于mysql - 如何使用MySQL中等效的generate_series()来计数项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31545379/