ホームページ > php教程 > php手册 > MySQLのGROUP_CONCAT()関数の使い方

MySQLのGROUP_CONCAT()関数の使い方

WBOY
リリース: 2016-06-13 12:29:49
オリジナル
1400 人が閲覧しました

構文:

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

まず、学生コース選択テーブル Student_courses を作成し、テスト データを入力します。

SQL コード

コードをコピー コードは次のとおりです。


CREATE TABLEstudent_courses (
Student_id INT UNSIGNED NOT NULL、
course_id INT UNSIGNED NOT NULL、
KEY(student_id)
);
Student_courses の値に挿入 (1, 1), (1, 2), (2, 3) ), ( 2, 4), (2, 5);



学生 ID 2 で選択されたコースを検索するには、次の SQL を使用します:

SQL コード

コードをコピーします コードは次のとおりです:


mysql> SELECT Student_id, course_id FROM Student_courses WHERE Student_id=2; -- ---------- ----------------
| コース ID | - ----- -------
| 2 |
| - ---- --------
3 rows IN SET (0.00 sec)



出力結果は 3 レコードあり、学生証を持つ学生であることがわかります。 2は3と4、5はこの3コースを選択しました。
PHP に配置する場合、以下に示すように、ループを使用してこれら 3 つのレコードを取得する必要があります。




PHP コード



コピーコード

コードは次のとおりです。 foreach ($pdo->query("SELECT Student_id, course_id FROM Student_courses WHERE Student_id=2") as $row) { $result[] = $row['courses_id'];

}



GROUP_CONCAT() 関数と GROUP BY ステートメントを使用すると、次のように非常に簡単になります。以下:


SQL コード



コードをコピー

コードは次のとおりです: mysql> SELECT 学生 ID, GROUP_CONCAT( コース ID) AS コース FROM 学生コース WHERE 学生 ID=2 GROUP BY 学生 ID;学生 ID | コース - ----------- --------

2 | ----- --- ------

1 row IN SET (0.00 秒)



このように、PHP での処理は簡単です:



PHP コード




コードをコピー

コードは次のとおりです:

$row = $pdo ->query("SELECTstudent_id, GROUP_CONCAT(courses_id ) AS course FROM Student_courses WHERE Student_id=2 GROUP BY Student_id"); >

区切り文字もカスタマイズできます。デフォルトは区切り文字として「,」です。これを「|||」に変更する場合は、たとえば、


SQL コード

コードをコピー コードは次のとおりです:

SELECT Student_id, GROUP_CONCAT(courses_id) SEPARATOR '|||') AS コース FROM Student_courses WHERE Student_id=2 GROUP BY Student_id;

さらに、このグループの値を並べ替えて文字列に連結することもできます。たとえば、course_id で降順に並べ替えます。

SQL コード

コードをコピー コードは次のとおりです:

SELECT 学生 ID, GROUP_CONCAT(コース ID ORDER BY コース ID DESC) AS コース FROM 学生コース WHERE 学生 ID=2 GROUP BY 学生 ID;

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート