一对多查询,合并成一条数据
生活随笔
收集整理的這篇文章主要介紹了
一对多查询,合并成一条数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一對多查詢,合并成一條數據
? ?舉例:一個產品對應多個型號,把多個型號查詢出來顯示在一個字段下面。顯示出一條數據。
?
步驟:
? 1:創建產品表:
? ?2:創建型號表:
?
思路:
?
?
sql語句:
SELECT p.id AS '產品id',p.product_name AS '產品名字',p.type AS '產品類型', (SELECT group_concat(pm .model) FROM product_model pm WHERE pm.product_id=p.id) AS '產品型號'FROM product p?
注意:這里就用到一個函數:group_concat();
*如果要對合并的一方去重:嵌套DISTINCT即可:
(SELECT group_concat( DISTINCT(c.comName) ) FROM componen WHERE componen.proId= p.proId)?
查詢結果:
?
?
?
?
?
?
完整語法如下
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 數據類型過大問題?
達到需求目的!!
?
轉載于:https://www.cnblogs.com/dw3306/p/9638301.html
總結
以上是生活随笔為你收集整理的一对多查询,合并成一条数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 闪念-许久未来一切没变
- 下一篇: Nginx+Redis+Ehcache: