表关系图:

MySQL group_concat 方法的使用
需求:
我想要查询的数据结果是:
MySQL group_concat 方法的使用
 
我们可以内连接:
select s.id,s.name,srt.typeId,  stt.name as TypeName from scenics as s
INNER JOIN(
select * from scenics_type
) srt on srt.scenicsId=s.id
INNER JOIN(
SELECT * from scenicstype where deleted=0
)stt on stt.id=srt.typeId
得到结果是:
MySQL group_concat 方法的使用
显然我们需要分组,合并一下数据。
select s.id,s.name,srt.typeId,  stt.name as TypeName from scenics as s
INNER JOIN(
select * from scenics_type
) srt on srt.scenicsId=s.id
INNER JOIN(
SELECT * from scenicstype where deleted=0
)stt on stt.id=srt.typeId
GROUP BY(s.id)

 

得到结果是:

MySQL group_concat 方法的使用

但是TypeName累加成我们想要的结果。
MySQL给我们一个好用的方法实现这个目标。group_concat
select s.id,s.name,srt.typeId,   group_concat(stt.name SEPARATOR ',' )  as TypeName from scenics as s
INNER JOIN(
select * from scenics_type
) srt on srt.scenicsId=s.id
INNER JOIN(
SELECT * from scenicstype where deleted=0
)stt on stt.id=srt.typeId
GROUP BY(s.id)
结果如图:
MySQL group_concat 方法的使用
OK 大功告成!

相关文章: