構文:
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;
http://www.bkjia.com/PHPjc/318754.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/318754.html技術記事構文: GROUP_CONCAT([DISTINCT]expr[,expr...][ORDERBY{unsigned_integer|col_name|expr}[ASC|DESC][,col_name...]][SEPARATORstr_val]) まず、この関数を作成してみましょう。 ...