<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                #### mysql用group_concat()合并關聯表的多行信息到一個行字段 * * * * * 假設有兩張表,分別為訂單a,明細表b,訂單與明細為一對多的關系。 明細表通過外鍵id-與a表關聯。假設b表中存在字段name,現需要查詢訂單a表中的記錄,同時獲取存儲在訂單明細表b中的貨品名稱的信息(name字段),按照常規的查詢統計,明細表中有多少記錄,就會顯示多少行,如果我們只需要顯示訂單表a記錄及明細表當中貨品名稱的信息,則需要把查詢明細表name字段得到的多個明細記錄進行合并,這可以直接通過sql語句完成。 ##### 方法: 利用group_concat()方法,參數為需要合并的字段,合并的字段分隔符默認為逗號,可通過參數separator指定,該方法往往配合GROUP BY 一起使用。 ~~~ SELECT a.*, GROUP_CONCAT(b. NAME SEPARATOR '-') AS NAME FROM a LEFT JOIN b ON a.id = b.id GROUP BY a.id; ~~~ #### GROUP_CONCAT語法與實例代碼 本文為大家講解的是mysql數據庫中的`GROUP_CONCAT()`函數使用方法,感興趣的同學參考下. 語法: ~~~ GROUP_CONCAT( [ DISTINCT ] expr [, expr...][ ORDER BY { unsigned_integer | col_name | expr }[ ASC | DESC ] [, col_name...]][ SEPARATOR str_val ] ) ~~~ 下面演示一下函數,先建立一個學生選課表student_courses,并填充測試數據。 ~~~ 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: ~~~ 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條記錄,如下所示: 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語句就顯得非常簡單了,如下所示: ~~~ 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處理就簡單了: ~~~ $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來指定,例如: ~~~ SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_courses WHERE student_id = 2 GROUP BY student_id; ~~~ 還可以對這個組的值先進行排序再連接成字符串,例如,按courses_id降序來排: ~~~ 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; ~~~ * * * * * https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看