ホームページ  >  記事  >  バックエンド開発  >  MysqlのGROUP_CONCAT()関数の使い方_PHPチュートリアル

MysqlのGROUP_CONCAT()関数の使い方_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:53:141272ブラウズ

構文:

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)
); RTイントゥStudent_courses VALUES ( 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 2 | 3 |
| 5 | 3 行 ( 0.00 秒)



出力結果には 3 件のレコードがあり、学生 ID 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 コード



コードをコピー

コードは次のとおりです。 =2 学生 ID によるグループ
+----------+----------+ コース | -+---------+
| 3,4,5 | +----------+----------+ row IN SET (0.00 秒)
このように、php での処理は簡単です:



PHP コード



コードをコピーします

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


$row = $pdo- >query("SELECT 学生 ID, GROUP_CON CAT(コース ID) AS コース FROM 学生コース WHERE 学生 ID=2 GROUP BY 学生 ID");

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



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

SELECT Student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS Course FROM Student_courses WHERE Student_id=2 GROUP BY Student_id

さらに、このグループの値 sort 次に、それを文字列に連結します。たとえば、courses_id で降順に並べ替えます:

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

SELECT Student_id, GROUP_CONCAT(courses_id ORDER BY course_id DESC) AS コース FROM Student_courses W HERE Student_id=2 GROUP BY Student_id;

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/318754.html技術記事構文: GROUP_CONCAT([DISTINCT]expr[,expr...][ORDERBY{unsigned_integer|col_name|expr}[ASC|DESC][,col_name...]][SEPARATORstr_val]) まず、この関数を作成してみましょう。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。