首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL GROUP BY 多字段組合分組篩選實戰

     編輯:MySQL 資料庫相關知識

需求:對多個字段組合進行分組篩選,單字段 GROUP BY 會導致結果缺失。解決思路是使用多字段分組並配合應用層邏輯處理分割標識。

SQL 層面:多字段 GROUP BY

SELECT groups, name, goods 
FROM `table` 
GROUP BY groups, name 
ORDER BY name;

指定 groups, name 兩字段組合分組,保證同組內兩字段值均相同。

應用層邏輯:檢測分組邊界

查詢結果按分組字段排序後,遍歷數組比較當前行與上一行的分組鍵值:

$result = mysql_query("SELECT groups,name,goods FROM table GROUP BY groups,name ORDER BY name");
$arr = [];
while($row = mysql_fetch_array($result)) {
    $arr[] = $row;
}

$prev = null;
foreach($arr as $row) {
    if ($prev !== null && $row['groups'] !== $prev['groups']) {
        echo '分割符號'; // 組間分隔
    }
    echo $row['name'] . $row['goods'];
    $prev = $row;
}

關鍵點:ORDER BY name 確保同組數據連續;遍歷時對比 groups 字段變化插入分隔符。

注意事項

  • MySQL 5.7+ 預設啟用 ONLY_FULL_GROUP_BY,SELECT 列必須出現在 GROUP BY 或聚合函數中
  • 大數據量建議用窗口函數(MySQL 8.0+)或臨時表優化
  • 示例代碼使用已棄用的 mysql_* 擴展,實際項目請改用 PDO 或 mysqli

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved