zoukankan      html  css  js  c++  java
  • 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语句在一起使用,才能得到需要的效果。

  • 相关阅读:
    0719PHP基础:PDO
    0717PHP基础:面向对象
    0716PHP基础:面向对象
    0715JS基础:ajax
    0715PHP练习:文件操作
    0715PHP基础:文件操作
    0629正则表达式:基础
    0628正则表达式:练习
    zTree简单使用和代码结构
    servlet
  • 原文地址:https://www.cnblogs.com/smile-nn/p/8145213.html
Copyright © 2011-2022 走看看