MYSQL多列数据合并成1行

时间:2020-12-21 10:52:12

需求1:统计表1中type=1的条数

id name type
1 张三 1
2 李四 2
3 王五 2
4 张三 1

SQL:           

select  count(case when type=1 then 1 end)  from table1 

 

或者使用:  

select  count(id) from table1 where type=1 group by type


需求2:表1中type=1的name字段合并为1行

SQL:   

select group_concat(name) from table1 where type=1


需求3:表1中type=1的name字段合并为1行,同时去掉重复值


SQL:  

select group_concat(distinct name) from table1 where type=1


拓展:

表1(table1)

id name sex
1 张三
     
表2(table2)

id fav
1 喜欢打篮球
1 喜欢好姑凉
表3(table3)

id ach
1 语文85分
1 数学95分
现在3个表中,根据id相互关联,现在要求把3张表的数据和为1条,查出 id为1的所有数据并且展示

SQL: 

select table1.id,table1.name,table1.sex,group_concat(table2.fav) as favs,group_concat(table3.ach) as achs 
from table1
left join table2 on table1.id=table2.id
left join table3 on table1.id=table3.id

结果


id name sex favs achs
1 张三 喜欢打篮球,喜欢好姑凉 语文85分,数学95分