Mysql一對多數據顯示成一行


今天改一個問題,業務上是一對多關系,按照正常的思維查出來數據會顯示多條,這顯然是不對的。我們需要的是一個商戶從屬多個平台方,對商戶列表來說,用於只有一條數據才對。

Mysql中的GROUP_CONCAT(expr) 函數完美的解決了我的問題。

一、基本語法

GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])

二、使用例子

       注意:group_concat函數不能和in一起使用,但通過find_in_set來實現in的效果

SELECT A.*, ( SELECT group_concat(B. NAME) FROM tableB B WHERE find_in_set(B.id, A.platId) ) AS  name FROM tableA A

三、GROUP_CONCAT(expr)默認分隔符是“,”,還可以通過separator來自定義分隔符

SELECT A.*, ( SELECT group_concat(B. NAME SEPARATOR ";") FROM tableB B WHERE find_in_set(B.id, A.platId) ) AS  name FROM tableA A

四、根據組的值來進行排序再連接成字符串,例如按id降序來排:

SELECT A.*, ( SELECT group_concat(B. NAME SEPARATOR ";" order by NAME desc) FROM tableB B WHERE find_in_set(B.id, A.platId) ) AS  name FROM tableA A


免責聲明!

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



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