关于mysql的group_concat()函数总结

背景(场景):在项目中,有一个需要显示视频资源列表的页面,视频资源的信息对应一张表t_video,还有另外两张表分别表示视频的种类(表t_type)和视频的地区(表t_area),t_video和t_area、t_type是多对多的关系,即一个video信息里面会包含一个或多个区域和类型信息,举例:

一个video既可以是搞笑,也可以是爱情片,但是这是两个种类。于是想一次取出一条video的信息,这个时候就用到了标题上说的group_concat()函数,这是mysql自带的函数,oracle也有相应的函数,使用时它必须和group by一起使用,才能起到作用。

    页面效果如下:

SQL语句如下:

SELECT

vi.title

,group_concat(distinct va.`name`) area

,group_concat(distinct vt.`name`) type

,vk.`name` kindd

FROM video_info vi , video_area va , video_type vt , video_kind vk , video_info_area via , video_info_type vit

WHERE vi.vfID = '658821a1-adb0-4a97-89af-612e2294f748'

AND vi.vfID = via.vfID

AND vi.vfID = vit.vfID

AND vi.kind = vk.vkID

AND via.vaID = va.vaID

AND vit.vtID = vt.vtID

GROUP BY vi.title;

注:video_info_area和video_info_type是关系表。

执行结果:

其实group_concat()的作用,用在网上看到的一句话就是:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。

posted @ 2013-03-05 16:23  BlueIceQ  阅读(494)  评论(0编辑  收藏  举报