mysql选择第一个字母字符的发生次数之和

mysql选择第一个字母字符的发生次数之和,mysql,Mysql,嗨,我需要做的是创建一个select语句,它输出表中某个字段中第一个字符的总和,这样输出看起来就像 A,12 B,0 C,20 D,14 E,0 ect... 该表称为contacts,在上面的表中,出现了12次姓名以字母A开头的人,出现了0次字母B 我希望我已经正确地解释了这一点试试这个: select substr(name, 1,1), count(*) from contacts group by substr(name, 1,1) 你可以随心所欲 select left(UPPE

嗨,我需要做的是创建一个select语句,它输出表中某个字段中第一个字符的总和,这样输出看起来就像

A,12
B,0
C,20
D,14
E,0
ect...
该表称为contacts,在上面的表中,出现了12次姓名以字母A开头的人,出现了0次字母B

我希望我已经正确地解释了这一点

试试这个:

select substr(name, 1,1), count(*) from contacts group by substr(name, 1,1)
你可以随心所欲

select 
left(UPPER(firstname),1) as initial , 
count(*) as tot from users 
group by initial ;
当您想要显示列表中不存在的字符时,您可能还需要一个查找表,然后与查找表联接。查找表将只包含字母表

select 
a.alpha,
coalesce(b.tot,0)  as total
from alphabets a
left join
(
  select
  left(UPPER(firstname),1) as initial , 
  count(*) as tot from users 
  group by initial
)b
on b.initial = a.alpha
;


希望这会有所帮助

SELECT LEFT(firstname,1) as character, COUNT(1) as totalCount 
FROM contacts
GROUP BY initial ORDER BY firstname;

为了让结果显示丢失的字母,您需要手动生成所有字母,例如使用子查询

SELECT  a.Letter, 
        COUNT(u.Name) AS TotalCount
FROM
        (
            SELECT 'A' Letter UNION ALL
            SELECT 'B' Letter UNION ALL
            SELECT 'C' Letter UNION ALL
            -- until Z
            SELECT 'Z' Letter 
        ) AS a
        LEFT JOIN userList u
            ON a.Letter = LEFT(u.Name, 1)   -- <== column name
GROUP   BY a.Letter
ORDER   BY a.Letter
艰难的道路也同样如此

  SELECT
 'A' as letter , 
  count(*) as total FROM totalCount
  WHERE left(UPPER(firstname),1)='A'
  UNION
  SELECT
  'B' as letter , 
  count(*) as total FROM totalCount
  WHERE left(UPPER(firstname),1)='B'
  .....
  UNION
  SELECT
  'Z' as letter , 
  count(*) as total FROM totalCount
  WHERE left(UPPER(firstname),1)='Z'
创建另一个表

table_letter
id letter
1    A
2    B
3    C
...
26   Z

SELECT a.letter, COUNT(b.name) as total
FROM table_letter a
LEFT JOIN contacts b
ON a.letter = left(UPPER(b.name),1)
GROUP BY a.letter

那么字母表中计数为零的字母呢,如我在字母B的示例中所示,我也需要得到这些字母吗?谢谢,但是我如何将where子句添加到userlist中,但仍然保持零字母,我尝试添加where u.verified=1和B DISAPERIALES您应该将其添加到on子句中。例如,字母=LEFTu.Name,1和u.verified=1
table_letter
id letter
1    A
2    B
3    C
...
26   Z

SELECT a.letter, COUNT(b.name) as total
FROM table_letter a
LEFT JOIN contacts b
ON a.letter = left(UPPER(b.name),1)
GROUP BY a.letter