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