MySQL:GROUP_CONCAT()函數介紹


問:一個表中有兩個字段:id,父id,如何求出父id下面的所有id呢?

建表:

CREATE table test (
id int(4) ,
parent_id int(4)
);

添加數據:

 

嘗試一:

SELECT  parent_id,id from test GROUP BY parent_id

結果:

顯然是錯誤的,每一組只顯示了一條數據, 沒達到我們的目的。

經查閱資料發現:使用group_concat()可以將group by產生的同一個分組中的值連接起來,返回一個字符串結果。

嘗試二:

SELECT  parent_id,GROUP_CONCAT(id) from test GROUP BY parent_id

結果:

 成功顯示出了所有的子id。

 

拓展

group_concat()函數完整語法如下:

group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

示例:SELECT * FROM testgroup

表結構與數據如上

現在的需求就是每個id為一行 在前台每行顯示該id所有分數

  • SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id

可以看到 根據id 分成了三行 並且分數默認用 逗號 分割 但是有每個id有重復數據

 

接下來去重:

  •  SELECT id,GROUP_CONCAT(DISTINCT score) FROM testgroup GROUP BY id

 

 

排序:

  • SELECT id,GROUP_CONCAT(DISTINCT score ORDER BY score DESC) as result FROM testgroup GROUP BY id

 

最后可以設置分隔符:

  • SELECT id,GROUP_CONCAT(DISTINCT score ORDER BY score DESC SEPARATOR '-') as result FROM testgroup GROUP BY id

 


免責聲明!

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



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