MySQL GROUP BY 中的非聚合列:與標準的偏差
MySQL 的GROUP BY 實現允許包含非聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚合列即使它們未聚集包含在分組標準中,也會出現在SELECT 清單中。此行為與 ANSI SQL 標準不同,後者禁止在此類查詢中選擇非分組資料列。
這種差異源自於函數依賴的概念。在 MySQL 中,如果非分組列在功能上依賴分組列,MySQL 會默默地選擇並傳回該列的單一值。但是,需要注意的是,如果不強制執行函數依賴,則此類查詢可能會導致不明確的結果。
例如,以下查詢在 ANSI SQL 中將無效:
SELECT AVG(table1.col1), table1.personID, persons.col4 FROM table1 JOIN persons ON (table1.personID = persons.id) GROUP BY table1.personID;
在 MySQL 中,允許此查詢,因為 Persons.col4 在功能上透過連結依賴 table1.personID。但是,如果多個人具有相同的 personID,則 Persons.col4 的結果可能是任意的。
為了防止這種歧義,MySQL 提供了 ONLY_FULL_GROUP_BY SQL 模式,該模式強制執行符合 ANSI 標準的更嚴格的分組規則。預設情況下,此模式未啟用,但可以啟動它以確保查詢遵循標準行為。
請注意,SQLite 也允許在 GROUP BY 查詢中使用非聚合列,但它選擇最後一個值在一組中而不是任意一個中。不應依賴此行為,因為它可能在未來版本中發生變化。為了避免歧義,建議將查詢重寫為明確且確定的。
以上是MySQL 如何處理 GROUP BY 子句中的非聚合資料列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能