> mysql 5.7's only_full_group_by
模式:故障排除和解決方案
升級到MySQL 5.7通常會引入only_full_group_by
語句包含未包含在SELECT
>子句中的非聚集列時,就會發生這種情況。 與其禁用這種關鍵特徵(強烈灰心),讓我們探索有效的解決方案:GROUP BY
問題: 在較舊的MySQL版本中正確運行的查詢可能會在5.7中失敗,在
列表中產生一個錯誤指示非聚集列的錯誤在功能上並不取決於>列。
SELECT
GROUP BY
推薦的解決方案:
>列表中的任何非聚集列添加到>子句中。 這樣可以確保每個組唯一地定義這些列的值。 例如:GROUP BY
SELECT
GROUP BY
<code class="language-sql">GROUP BY group_name, group_id</code>
>,,,MIN()
,MAX()
,AVG()
,)。這樣可以確保每組單個結果。 示例:SUM()
COUNT()
<code class="language-sql">SELECT group_id AS 'value', group_name AS 'text', COUNT(*) AS 'count' FROM mod_users_groups LEFT JOIN mod_users_data ON group_id = mod_users_data.group_id WHERE ... GROUP BY group_name, group_id</code>
始終符合其表格或別名的列表,尤其是在涉及加入的查詢中。這闡明了每列屬於哪個表並防止歧義。
通過實施這些策略,您可以在遵守MySQL 5.7改進的SQL標準合規性的同時解決數據完整性並保持數據完整性。 避免禁用<code class="language-sql">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 ... GROUP BY g.group_name, g.group_id HAVING COUNT(d.user_id) > 0 ORDER BY g.group_name</code>
以上是如何解析mySQL的`halle_full_group_by`錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!