首頁 > 資料庫 > mysql教程 > 為什麼我的 PostgreSQL GROUP BY 查詢失敗而 MySQL 成功?

為什麼我的 PostgreSQL GROUP BY 查詢失敗而 MySQL 成功?

DDD
發布: 2025-01-18 09:56:12
原創
718 人瀏覽過

Why Does My PostgreSQL GROUP BY Query Fail While MySQL Succeeds?

PostgreSQL 嚴格的 GROUP BY 子句與錯誤處理

在PostgreSQL 中執行類似SELECT * FROM the_table GROUP BY col2 的查詢會導致錯誤:「列「the_table.col3」必須出現在GROUP BY 子句中或在聚合函數中使用。」這是因為PostgreSQL 嚴格遵守SQL 標準,要求SELECT 清單中的所有欄位要麼包含在GROUP BY 子句中,要麼成為聚合函數的一部分。

聚合函數:解

聚合函數,例如 SUM()MIN()MAX()AVG()COUNT(),從一組值計算單一值。 若要修復 PostgreSQL 錯誤,您必須將聚合函數套用至 GROUP BY 子句中不存在的任何欄位。

MySQL 的非標準行為

MySQL 對 GROUP BY 更寬鬆的處理是一個非標準擴充。 它允許選擇不在 GROUP BY 子句中的非聚合列,但所選值是不確定的; MySQL 本質上是從每個群組中為這些列選取一個任意值。 這可能會導致不可預測且不一致的結果。

PostgreSQL 更嚴格的方法保證了一致且可重現的查詢結果。

修正 PostgreSQL 查詢

要修正 PostgreSQL 查詢,請在 col3(以及不在 GROUP BY 子句中的任何其他欄位)上使用聚合函數。例如:

<code class="language-sql">SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;</code>
登入後複製

此修改後的查詢使用 MIN()col3 定義的每個群組選擇 col2 的最小值。 您應該根據您想要的結果選擇適當的聚合函數(例如,MAX()AVG())。

以上是為什麼我的 PostgreSQL GROUP BY 查詢失敗而 MySQL 成功?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板