不進行分組聚合:MySQL 5.6 的解決方案
在MySQL 5.6 中,ANY_VALUE() 函數,允許聚合非分組列,允許聚合非分組列,允許聚合非分組不可用。這在將查詢從 MySQL 5.7 遷移到 5.6 時帶來了挑戰。
MySQL 模式修改
一個解決方案是修改生產環境的 SQL 模式。透過將 ONLY_FULL_GROUP_BY 模式設為空,它將暫時停用聚合非分組列的限制。
SET SESSION sql_mode = ''; /* Your query here */ SET SESSION sql_mode = @mode;
替代聚合方法
但是,很重要請注意,所討論的查詢可能並不理想。它從每個國家/地區的“圖像”表中傳回隨機行。
更可靠的方法是根據條件(例如「id」列)選擇特定影像行。
SELECT c.id, c.name, i.* FROM countries c LEFT JOIN ( SELECT MIN(id) id, country_id FROM images GROUP BY country_id ) first ON c.id = first.country_id LEFT JOIN images i ON first.id = i.id
此查詢將為每個國家/地區返回一行,並提供可預測的圖像選擇。它利用“id”列來選擇每個國家/地區的“第一張”圖像。
以上是如何在 MySQL 5.6 中聚合非分組列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!