MySQL 中的 GROUP_CONCAT() 函數是一種聚合函數。此函數用於使用各種子句將多行中的字符串連接成單個字符串。如果該組包含至少一個非空值,則它始終返回一個字符串值。否則,您將獲得空值。
以下是 GROUP_CONCAT() 函數的語法:
GROUP_CONCAT(
DISTINCT expression
ORDER BY expression
SEPARATOR sep
);
或,
mysql> SELECT c1, c2, ....., cN
GROUP_CONCAT (
[DISTINCT] c_name1
[ORDER BY]
[SEPARATOR] )
FROM table_name GROUP BY c_name2;
在這種語法中,
- c1, c2,‌.,cN 是表列。
- c_name1 是表列,其值將連接為每個組的單個字符串。
- c_name2 是從中執行分組的表列。
GROUP_CONCAT() 函數的選項說明如下:
Distinct:此子句在進行串聯之前刪除組中的重複值。
Order By:它允許我們按升序或降序對組數據進行排序,然後進行串聯。默認情況下,它按升序執行排序。但是,您可以顯式使用 DESC 選項按降序對值進行排序。
分隔符:默認情況下,此子句使用逗號(,)運算符作為分隔符。如果要更改默認分隔符,可以指定文字值。
注意:此函數始終返回二進製或非二進製字符串值的結果,具體取決於指定的參數。默認情況下,它返回等於 1024 的字符串值的最大長度。如果要增加此長度,可以使用 group_concat_max_len 係統變量。
GROUP_CONCAT() 示例
讓我們創建一個表員工以了解此函數如何使用不同的查詢在 MySQL 中工作。
1. 使用簡單查詢
mysql> SELECT emp_id, emp_fname, emp_lname, dept_id,
GROUP_CONCAT(designation) as "designation" FROM employee group by emp_id;
此語句將提供以下輸出:
2. 使用 DISTINCT 子句
mysql> SELECT emp_fname, dept_id,
GROUP_CONCAT(DISTINCT designation) as "designation" FROM employee group by emp_id;
成功執行上述語句後,我們將得到以下輸出:
3. 使用分隔符
mysql>SELECT emp_fname,
GROUP_CONCAT(DISTINCT designation SEPARATOR '; ') as "designation" FROM employee group by emp_id;
此處,分隔符子句將默認返回字符串逗號(,) 更改為分號(;) 和空格字符。
上麵的語句將給出以下輸出:
GROUP_CONCAT() 和 CONCAT_WS()
現在,您已了解 GROUP_CONCAT() 函數的工作原理。有時,我們可以將此函數與 CONCAT_WS() 函數一起使用,以獲得更有用的結果。下麵的語句更清楚地解釋了它:
mysql>SELECT GROUP_CONCAT(CONCAT_WS(', ', emp_lname, emp_fname) SEPARATOR ';') as employeename FROM employee;
在此語句中,CONCAT_WS() 函數首先連接每個員工的名字和姓氏,並得到員工的全名。接下來,我們使用帶有分號 (;) 分隔符子句的 GROUP_CONCAT() 函數將所有員工的列表放在一行中。最後,執行語句。執行成功後,我們會得到如下輸出:
此函數在單行中返回結果,而不是值列表。因此,我們不能使用 IN 運算符來使用 GROUP_CONCAT() 函數。如果我們在此函數中使用 IN 運算符,則查詢將不起作用,因為 IN 運算符接受值列表,而不是字符串。
相關用法
- MySQL GREATEST()用法及代碼示例
- MySQL GET_FORMAT()用法及代碼示例
- MySQL Group_CONCAT()用法及代碼示例
- MySQL ROUND()用法及代碼示例
- MySQL REPEAT()用法及代碼示例
- MySQL POWER()用法及代碼示例
- MySQL LEAD() and LAG()用法及代碼示例
- MySQL IS_IPV4()用法及代碼示例
- MySQL WEEK()用法及代碼示例
- MySQL CHARACTER_LENGTH()用法及代碼示例
- MySQL CURTIME()用法及代碼示例
- MySQL weekofyear()用法及代碼示例
- MySQL CURRENT_TIME()用法及代碼示例
- MySQL Convert()用法及代碼示例
- MySQL FROM_BASE64()用法及代碼示例
- MySQL OCT()用法及代碼示例
- MySQL PI()用法及代碼示例
- MySQL CONCAT()用法及代碼示例
- MySQL period_add()用法及代碼示例
- MySQL STDDEV()用法及代碼示例
注:本文由純淨天空篩選整理自 MySQL GROUP_CONCAT() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。