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

下面演示一下這個函數,先建立一個學生選課表student_courses " /> 一级毛片精品毛片,99久热这里只有精品视频免费观看,亚洲一区二区精品

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Mysql的GROUP_CONCAT()函數使用方法

語法:

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

下面演示一下這個函數,先建立一個學生選課表student_courses,并填充一些測試數據。

SQL代碼
復制代碼 代碼如下:
CREATE TABLE student_courses (     
    student_id INT UNSIGNED NOT NULL,     
    courses_id INT UNSIGNED NOT NULL,     
    KEY(student_id)     
);     
INSERT INTO student_courses VALUES (1, 1), (1, 2), (2, 3), (2, 4), (2, 5);    


若要查找學生ID為2所選的課程,則使用下面這條SQL:

SQL代碼 
復制代碼 代碼如下:
mysql> SELECT student_id, courses_id FROM student_courses WHERE student_id=2;     
+------------+------------+     
| student_id | courses_id |     
+------------+------------+     
|          2 |          3 |     
|          2 |          4 |     
|          2 |          5 |     
+------------+------------+     
3 rows IN SET (0.00 sec)  
 

輸出結果有3條記錄,說明學生ID為2的學生選了3、4、5這3門課程。
放在php里,必須用一個循環才能取到這3條記錄,如下所示:

 

php代碼
復制代碼 代碼如下:
foreach ($pdo->query("SELECT student_id, courses_id FROM student_courses WHERE student_id=2") as $row) {     
    $result[] = $row['courses_id'];     
}     

而如果采用GROUP_CONCAT()函數和GROUP BY語句就顯得非常簡單了,如下所示:

 

SQL代碼 
復制代碼 代碼如下:
mysql> SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;     
+------------+---------+     
| student_id | courses |     
+------------+---------+     
|          2 | 3,4,5   |     
+------------+---------+     
1 row IN SET (0.00 sec)   


這樣php里處理就簡單了:

 

php代碼
復制代碼 代碼如下:
$row = $pdo->query("SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id");     
$result = explode(',', $row['courses']);     


分隔符還可以自定義,默認是以“,”作為分隔符,若要改為“|||”,則使用SEPARATOR來指定,例如:

 

SQL代碼
復制代碼 代碼如下:
SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;     

除此之外,還可以對這個組的值來進行排序再連接成字符串,例如按courses_id降序來排:

SQL代碼
復制代碼 代碼如下:
SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;

php技術Mysql的GROUP_CONCAT()函數使用方法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 洛宁县| 武安市| 清丰县| 革吉县| 泸定县| 五华县| 同江市| 越西县| 柳河县| 扬中市| 乌兰察布市| 石渠县| 南充市| 卢龙县| 安庆市| 古蔺县| 铁力市| 越西县| 龙川县| 尉犁县| 塘沽区| 平利县| 营口市| 桃源县| 大姚县| 会泽县| 临清市| 赫章县| 安龙县| 青田县| 雅安市| 富平县| 洪泽县| 绵阳市| 满城县| 遵义市| 鲁甸县| 晴隆县| 渝北区| 林州市| 上饶县|