• mysql中GROUP_CONCAT函数解决分组查询一个id对应多个值想要把这多个值展示成一行


    现象:

    SELECT
        t2.r_build_id,t3.hs_id,(CASE t3.ct_type WHEN '2' THEN '外迁' WHEN '3' THEN '货币' WHEN '' THEN '' ELSE '货币+外迁' END) AS ct_type
    FROM
       house_info_r_205 t1,build_info_r_205 t2,house_contract_205 t3
    WHERE
       t1.r_buld_id = t2.r_build_id AND t1.hs_id = t3.hs_id
    ORDER BY
      t2.zyqy_status_time_flow

    想要达到的效果是:

      27   货币,外迁    或者是   27   货币+外迁

    SELECT
        t2.r_build_id,
        (CASE GROUP_CONCAT(DISTINCT t3.ct_type)
        WHEN '2' THEN '外迁'
        WHEN '3' THEN '货币'
        WHEN '' THEN ''
        ELSE '货币+外迁' END) AS ct_type
    FROM
         house_info_r_205 t1,build_info_r_205 t2,house_contract_205 t3
    WHERE
         t1.r_buld_id = t2.r_build_id AND t1.hs_id = t3.hs_id
    GROUP BY  r_build_id

    注意:

         group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。比较抽象,难以理解。

    通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组

    结论:group_concat()函数需要与group by语句在一起使用,才能得到需要的效果。

  • 相关阅读:
    Spring格式化注解
    Mysql 慢查询和慢查询日志分析
    jQuery中的end()方法
    webService学习笔记
    让Hibernate和触发器协同工作
    JavaScript中的setInterval用法
    jQuery中事情的动态绑定
    mongoDB如何处理多对多关系
    新生儿信息管理系统在线帮助
    MySQL数据库安装与配置详解
  • 原文地址:https://www.cnblogs.com/smile-nn/p/8145213.html
Copyright © 2020-2023  润新知