解決MySQL 中的“混合組列”錯誤
MySQL 中的#1140 錯誤,指示“混合組列”,當查詢在SELECT 子句中包含非聚合(非GROUP)欄位同時也包含聚合列時,會出現此問題沒有GROUP BY子句。為了解決這個問題,主要有兩種方法:
1.停用 ONLY_FULL_GROUP_BY:
MySQL 有一個名為 ONLY_FULL_GROUP_BY 的設定,默認為 ON。此設定強制執行嚴格的 GROUP BY 語義,要求 SELECT 子句中的所有非聚合列都包含在 GROUP BY 清單中。若要停用此設置,請執行下列查詢:
SET SESSION ONLY_FULL_GROUP_BY = OFF;
停用 ONLY_FULL_GROUP_BY 以允許查詢在不修改的情況下執行。
2.新增 GROUP BY 欄位:
或者,您可以修改查詢以包含 GROUP BY 子句中的所有選取欄位。這可以確保所有非聚合列都被“分組”,並且結果集滿足嚴格的GROUP BY 語義:
SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid WHERE node.type IN ('update') GROUP BY node.nid, node_data_field_update_date.field_update_date_value ORDER BY node_data_field_update_date_field_update_date_value DESC;
修改查詢以包含GROUP BY 子句可以透過明確地將結果分組來解決問題在所有非聚合列上設定。
以上是如何解決MySQL的「混合群組列」錯誤(錯誤#1140)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!