日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql group_concat去重_mysql 数据库group_concat函数的一些用法

發(fā)布時間:2024/8/23 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql group_concat去重_mysql 数据库group_concat函数的一些用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

對于group_contact函數一般懂一點sql的人來說,并不算太陌生,它主要配合group by 使用,起著分組時,將涉及行的相應的字段串聯(lián)成一個字段如下表a:

我們按照type分類,并將對應的名稱按逗號分隔保存為一個names字段可以寫為:

select type,group_concat(name) names from a group by type;

結果如下:

上面就是我們group_concat常見的用法,但是今天做項目時發(fā)現(xiàn)group_concat還有排序的語法,于是看了相關資料發(fā)現(xiàn)其完整的語法如下:

GROUP_CONCAT([DISTINCT] expr[,expr ……]

[ORDER BY {unsigned_integer| col_name | expr}

[ASC | DESC] [,col_name……]]

[SEPARATOR str_val])

官方解釋如下:

在MySQL中,你可以獲取表達式組合的連接值。你可以使用DISTINCT刪去重復值。假若你希望多結果值進行排序,則應該使用 ORDER BY子句。若要按相反順序排列,將 DESC (遞減) 關鍵詞添加到你要用ORDER BY 子句進行排序的列名稱中。默認順序為升序;可使用ASC將其明確指定。 SEPARATOR 后面跟隨應該被插入結果的值中間的字符串值。默認為逗號 (‘,’)。通過指定SEPARATOR '' ,你可以刪除所有分隔符

什么意思呢?我們來實現(xiàn)一個功能你就知道了。如下表b:

按type 分類,查詢出相應的姓名及年齡,保存為字段nameages,并按年齡從小到大的順序排序,用";"隔開,并去重.

sql 如下:

select type,group_concat(distinct name,age order by age desc separator ';')

nameages from a group by type;

張三 的數據就被去重了。并且nameages里面的數據是按照年齡從大到小的順序排列的。這里要注意distinct 后面的name,age字段值都相同才認為相同。

也許nameages里面的數據還不夠人性化,我們可以在group_concat里面加上contact實現(xiàn)。

select type,group_concat(distinct concat('姓名:',name,',年齡:',age) order by age desc separator ' ; ')nameages from a group by type; 結果如下:

讀者朋友們,group_concat用法get到了嗎?歡迎關注及討論!

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的mysql group_concat去重_mysql 数据库group_concat函数的一些用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。