MySQL 5.7 的 only_full_group_by
錯誤:詳解及解決方案
在 MySQL 5.7 中遇到 "Expression #1 of SELECT list is not in GROUP BY clause" 以及 "only_full_group_by" 錯誤可能會讓人困惑。本文旨在闡明此問題並提供解決方案。
問題分析
5.7 之前的 MySQL 版本允許 SELECT 列表中包含未出現在 GROUP BY 子句中的列,即使這些列的值在分組內可能不同。然而,在 5.7 版本中,默認行為已更改,僅當這些列被聚合時才允許這樣做。這是由 "only_full_group_by" 模式強制執行的。
問題解決
該錯誤表明查詢的 SELECT 列表中包含一個未聚合的列,該列與 GROUP BY 子句中的列之間不存在函數依賴關係。要解決此問題,可以刪除未聚合的列,或將其添加到 GROUP BY 子句中。
推薦解決方案
對於此特定查詢,建議將 "group_id" 列添加到 GROUP BY 子句中,確保所有未聚合的列都與 GROUP BY 子句中的列存在函數依賴關係:
SELECT g.group_id AS 'value', g.group_name AS 'text' FROM mod_users_groups g LEFT JOIN mod_users_data d ON g.group_id = d.group_id WHERE g.active = 1 AND g.department_id = 1 AND g.manage_work_orders = 1 AND g.group_name != 'root' AND g.group_name != 'superuser' GROUP BY g.group_id, g.group_name HAVING COUNT(d.user_id) > 0 ORDER BY g.group_name
其他注意事項
在多表查詢中,最好使用表名或別名限定列名,如推薦解決方案所示。
不建議關閉 "only_full_group_by",因為它允許任意選擇未聚合的列,這可能導致結果不一致且不可預測。
以上是如何解決MySQL的「only_full_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版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

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