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語句在一起使用,才能得到需要的效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM