首頁 > 資料庫 > mysql教程 > 在 SQL 中使用聚合函數時如何避免「not a GROUP BY expression」錯誤?

在 SQL 中使用聚合函數時如何避免「not a GROUP BY expression」錯誤?

Susan Sarandon
發布: 2025-01-13 06:15:43
原創
454 人瀏覽過

How Can I Avoid

理解 SQL 的 GROUP BY 子句與聚合函數

使用 SQL 的 GROUP BY 子句通常會導致對分組後可存取哪些屬性感到困惑。讓我們澄清一下:

GROUP BY 和非聚合列

分組後嘗試存取非聚合列會導致「不是 GROUP BY 表達式」錯誤。這是因為每個群組可能包含多行,且非聚合列中的值在這些行之間會有所不同。

聚合函數:深入了解

相反,聚合函數(如 SUMMAXAVG 等)即使在應用 GROUP BY 後也可以存取每個群組內的基礎欄位。 他們計算整個組的單一匯總值。

範例:

考慮這個查詢:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no;</code>
登入後複製

此查詢將失敗,因為它嘗試選擇所有列,而不在非聚合列上使用聚合函數,例如 order_price.

但是,這是一個有效的查詢:

<code class="language-sql">SELECT SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
登入後複製

在這裡,SUM 處理每個組,對 order_price 值進行求和,得出每個 order_no 的總價格。

GROUP BY

中包含非聚合列

要在分組後存取非聚合列,請將它們包含在 GROUP BY 子句中:

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
登入後複製

這會正確檢索每個 order_no 及其總數 order_price

以上是在 SQL 中使用聚合函數時如何避免「not a GROUP BY expression」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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