進公司做的第一個項目就是做一個訂單追蹤查詢,裏裏外外連接了十一個表,作爲公司菜雞的我麻了爪.
其中有一個需求就是對於多行的數據在一行顯示,原諒我才疏學淺 無奈下找到了項目組長 在那學來了這個利器 (他就是我心目中的小SQL王)
完整語法如下
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
- SELECT * FROM testgroup
表結構與數據如上
現在的需求就是每個id爲一行 在前臺每行顯示該id所有分數
group_concat 上場!!!
- 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(score ORDER BY score DESC) FROM testgroup GROUP BY id
最後可以設置分隔符
- SELECT id,GROUP_CONCAT(score SEPARATOR ';') FROM testgroup GROUP BY id
這樣我們的數據就根據id 不同分隔符 放在了一行 前臺可以根絕對應的分隔符 對score 字段進行分割 但是有可能存在score 數據類型過大問題
達到需求目的!!!