从同一表中的mysql存储过程中选择具有不同条件的多个计数

Sim*_*mba 5 mysql sql stored-functions mariadb

我有一个像下面的桌子

tbl_test

test_id     name    val

1            ab       1
2            ac       1
3            ad       2
4            af       3
5            fg       2
6            ss       1
7            dd       3
Run Code Online (Sandbox Code Playgroud)

我想在同一查询中根据val来计算名称

试过了

(select count(name )   where val='1' ) as one,
(select count(name )   where val='2' ) as two,
(select count(name )   where val='3' ) as thr
Run Code Online (Sandbox Code Playgroud)

预期产量

test_id     name    val

1            ab       1
2            ac       1
3            ad       2
4            af       3
5            fg       2
6            ss       1
7            dd       3
Run Code Online (Sandbox Code Playgroud)

Fah*_*hmi 6

您可以将条件聚合与case when expression-

select 
    count(case when val=1 then name end) as one,
    count(case when val=2 then name end) as two,
    count(case when val=3 then name end) as thr
from tbl_test
Run Code Online (Sandbox Code Playgroud)