不使用聚合函數的GROUP BY 解釋
在不使用聚合函數的情況下使用GROUP BY 子句時,必須了解將行折疊為的概念單行。在這種情況下,子句的操作方式是將特定欄位具有相同值的多行合併為一行。然而,此過程提出了應如何處理其他欄位中的衝突值的問題。
如您提供的範例所示,選擇性地包含或排除 GROUP BY 子句中的欄位會產生有效或無效的結果。當 GROUP BY 子句中的列數等於 SELECT 語句中所選取的列數時,就會產生有效結果。
例如,在查詢「SELECT ename, sal FROM emp GROUP BY ename, sal,」SELECT 和 GROUP BY 子句中同時存在「ename」和「sal」會傳回預期輸出。
無效當 GROUP BY 子句中的列數與 SELECT 語句中選擇的列數不符時,就會出現結果。在查詢“SELECT ename, sal FROM emp GROUP BY ename;”中和“SELECT ename, sal FROM emp GROUP BY sal;”,所選列之一缺少分組表達式會觸發錯誤訊息“不是 GROUP BY 表達式”。
要避免此類錯誤,請記住當使用不含聚合函數的 GROUP BY 時,GROUP BY 子句中的列數必須始終與 SELECT 語句中選擇的列數相符。這可確保系統有關於如何組合重複值並產生有效結果的明確說明。
以上是如果沒有聚合函數,GROUP BY 如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!