校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > MySQL拼接字符串函數(shù)GROUP_CONCAT詳解

MySQL拼接字符串函數(shù)GROUP_CONCAT詳解

熱門(mén)標(biāo)簽:在哪里申請(qǐng)400電話 外呼系統(tǒng)電銷(xiāo)受騙 常州網(wǎng)絡(luò)外呼系統(tǒng)開(kāi)發(fā) 萊西市地圖標(biāo)注 安徽ai電話電銷(xiāo)機(jī)器人有效果嗎 400電話申請(qǐng)信用卡 巫師三血與酒地圖標(biāo)注 走過(guò)哪個(gè)省地圖標(biāo)注 銷(xiāo)售語(yǔ)音電話機(jī)器人

上一篇文章 跨表更新,看到自己寫(xiě)的SQL像個(gè)憨憨寫(xiě)了關(guān)于跨表個(gè)更新的內(nèi)容。一年過(guò)的很快,文中后來(lái)的兩位員工 馮大馮二 也要面對(duì)無(wú)情的 KPI 考核了,他們工作干的很不錯(cuò),performance 分別是 4 和 5

新需求來(lái)了,靜悄悄的來(lái)了!!! 領(lǐng)導(dǎo)想要查看每個(gè) performance 下都有誰(shuí),同時(shí)要求將這些人的名稱(chēng)要逗號(hào)拼接成一個(gè)字符串,也就是說(shuō)要得到下面的結(jié)果:

要將結(jié)果集中某個(gè)指定的列進(jìn)行字符串拼接,這要怎么做呢?主角閃亮✨登場(chǎng)

GROUP_CONCAT(expr)

在 Mysql 官方文檔 中,該函數(shù)被放在聚合函數(shù)章節(jié),如果你要按照指定字段分組拼接,就要配合關(guān)鍵字 GROUP BY 來(lái)使用的

定義

該函數(shù)返回一個(gè)字符串結(jié)果,該字符串結(jié)果是通過(guò)分組串聯(lián)的非NULL值。如果沒(méi)有非NULL值,則返回NULL。完整語(yǔ)法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
       [ORDER BY {unsigned_integer | col_name | expr}
         [ASC | DESC] [,col_name ...]]
       [SEPARATOR str_val])

What? 這個(gè)語(yǔ)法看著太復(fù)雜了吧,別著急,下面會(huì)用例子慢慢說(shuō)明逐一驗(yàn)證滴

使用案例

先完成文章開(kāi)頭的需求:

SELECT performance, GROUP_CONCAT(employee_name) AS employees
FROM employees
GROUP BY performance;

zou是這個(gè)結(jié)果:

到這里,領(lǐng)導(dǎo)給過(guò)來(lái)的需求就完成了😜

客官請(qǐng)留步,您點(diǎn)的菜還沒(méi)上完呢......

我們是國(guó)際化的團(tuán)隊(duì),我們的家鄉(xiāng)遍布五湖四海

領(lǐng)導(dǎo)想關(guān)懷一下員工,要查看公司全部員工的家鄉(xiāng)都有哪些地方。員工們可能來(lái)自同一個(gè)地方,所以要將結(jié)果集去重復(fù),DISTINCT 關(guān)鍵字就派上用場(chǎng)了

SELECT GROUP_CONCAT(DISTINCT home_town)
FROM employees;

來(lái)看結(jié)果:

領(lǐng)導(dǎo)的關(guān)懷遍布五湖四海啊......

文案要改了,領(lǐng)導(dǎo)的關(guān)懷是遍布四海五湖的, 那么 ORDER BY 關(guān)鍵字就派上用場(chǎng)了

SELECT GROUP_CONCAT(DISTINCT home_town ORDER BY home_town DESC) AS '領(lǐng)導(dǎo)關(guān)懷地區(qū)'
FROM employees;

-- 沒(méi)我這么起變量的哈,還是漢語(yǔ),我看你是瘋了

這里你看到 GROUP_CONCAT 函數(shù)拼接字符串默認(rèn)的分隔符是逗號(hào) ,, 領(lǐng)導(dǎo)不開(kāi)心,逗號(hào)么的感情,要用❕才能體現(xiàn)出關(guān)懷的強(qiáng)烈, SEPARATOR 關(guān)鍵字就派上用場(chǎng)了

分組拼接的值之間默認(rèn)分隔符是逗號(hào)(,)。要明確指定分隔符,需要使用 SEPARATOR 關(guān)鍵字,緊跟其后的是你想設(shè)置的分隔符。要完全消除分隔符,就在 SEPARATOR 關(guān)鍵字后面寫(xiě) '' 就好了
SELECT GROUP_CONCAT(DISTINCT home_town ORDER BY home_town DESC SEPARATOR '!') AS '領(lǐng)導(dǎo)關(guān)懷地區(qū)'
FROM employees;

SELECT GROUP_CONCAT(DISTINCT home_town SEPARATOR '') AS '領(lǐng)導(dǎo)關(guān)懷地區(qū)'
FROM employees;

這關(guān)懷到位了吧,你品,你細(xì)品!!!

領(lǐng)導(dǎo)的關(guān)懷能力也有限,拼接的字符串默認(rèn)的最大長(zhǎng)度是1024個(gè)字符,可以通過(guò)下面語(yǔ)句查看當(dāng)前限制是多少:

show variables like 'group_concat_max_len';

領(lǐng)導(dǎo)的能力可是飄忽不定的,所以我們可以靈活的設(shè)置這個(gè)值

SET [GLOBAL | SESSION] group_concat_max_len = val;

SESSION: 在當(dāng)前對(duì)話中生效 GLOBAL:全局都生效

該語(yǔ)句在執(zhí)行后,MySQL重啟之前一直有作用,一旦重啟 MySQL,則會(huì)恢復(fù)默認(rèn)值

有時(shí)候 GROUP_CONCAT() 還要搭配 CONCAT_WS() 發(fā)揮出一點(diǎn)點(diǎn)威力,舉個(gè)簡(jiǎn)單的例子

將消費(fèi)者的名和姓用逗號(hào)進(jìn)行分隔,然后再用 ; 進(jìn)行分隔
SELECT
  GROUP_CONCAT(
    CONCAT_WS(', ', contactLastName, contactFirstName)
    SEPARATOR ';')
FROM
  customers;

這里是 CONCAT_WS()函數(shù)用法, 很簡(jiǎn)單,請(qǐng)自行查看吧......

注意⚠️

GROUP_CONCAT()函數(shù)返回單個(gè)字符串,而不是值列表。這意味著我們不能在 IN 運(yùn)算符中使用GROUP_CONCAT()函數(shù)的結(jié)果,例如,在子查詢(xún)中, 像這樣:

SELECT
  id, name
FROM
  table_name
WHERE
  id IN GROUP_CONCAT(id);

總結(jié)

在許多情況下,我們都可以應(yīng)用GROUP_CONCAT()函數(shù)產(chǎn)生出有用的結(jié)果,同時(shí)也可以結(jié)合其他函數(shù)發(fā)揮出更大的威力. 單招學(xué)會(huì)了,就要學(xué)會(huì)連招 combo 了

您可能感興趣的文章:
  • Mysql合并結(jié)果接橫向拼接字段的實(shí)現(xiàn)步驟
  • Mysql 實(shí)現(xiàn)字段拼接的三個(gè)函數(shù)
  • mysql 多個(gè)字段拼接的實(shí)例詳解

標(biāo)簽:煙臺(tái) 赤峰 黃石 陽(yáng)江 河北 來(lái)賓 果洛 鞍山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL拼接字符串函數(shù)GROUP_CONCAT詳解》,本文關(guān)鍵詞  MySQL,拼接,字符串,函數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL拼接字符串函數(shù)GROUP_CONCAT詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于MySQL拼接字符串函數(shù)GROUP_CONCAT詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 西峡县| 分宜县| 海晏县| 科尔| 蚌埠市| 丰台区| 淮南市| 临武县| 潞城市| 壶关县| 石泉县| 蒙自县| 大足县| 运城市| 象州县| 太保市| 鲁甸县| 南陵县| 绥化市| 宁津县| 陆丰市| 普洱| 同仁县| 达州市| 奉节县| 铜鼓县| 白城市| 雷州市| 蛟河市| 梅河口市| 新源县| 仁怀市| 沁源县| 耒阳市| 额敏县| 江山市| 周宁县| 新余市| 蕲春县| 柘荣县| 应城市|