今天改一個問題,業務上是一對多關係,按照正常的思惟查出來數據會顯示多條,這顯然是不對的。咱們須要的是一個商戶從屬多個平臺方,對商戶列表來講,用於只有一條數據纔對。sql
Mysql中的GROUP_CONCAT(expr) 函數完美的解決了個人問題。函數
1、基本語法spa
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) |
2、使用例子排序
注意: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 Atable |
3、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 |
4、根據組的值來進行排序再鏈接成字符串,例如按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 |