zoukankan      html  css  js  c++  java
  • 关于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()会计算哪些行属于同一组,将属于同一组的列显示出来。

  • 相关阅读:
    Vue 事件修饰符 阻止默认事件
    vue created 生命周期
    续集---网络管理常用命令
    网络管理常用命令(6/14) -netstat命令详解
    系统OOM复位定位
    nohup- Shell后台运行
    一个linux命令(6/13):traceroute命令
    一个linux命令(6/12):cat 命令
    linux命令(6/11)--修改文件的用户组chgrp和文件所有者chown
    Linux终端快捷键
  • 原文地址:https://www.cnblogs.com/whatisjava/p/2944592.html
Copyright © 2011-2022 走看看