我在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/

10-13 03:40