【问题标题】:GROUP BY causes ORDER BY not to workGROUP BY 导致 ORDER BY 不起作用
【发布时间】:2013-06-11 20:55:36
【问题描述】:

这是我的 SQL;

SELECT
    cs.name,
    ct.name AS type,
    cr.date,
    cr.hg_version,
    cr.public,
    cr.tag,
    cr.reference,
    cr.description
FROM changelog_systems cs
LEFT JOIN changelog_rows cr ON cr.changelog_system_id = cs.id
LEFT JOIN changelog_types ct ON ct.id = cr.type_id
GROUP BY name
ORDER BY cr.date ASC

问题是我的系统没有最新日期;相反,它只获取在GROUP BY 之后幸存的最后一行。

【问题讨论】:

标签: mysql group-by sql-order-by left-join


【解决方案1】:

实际上,您的查询完全错误。您不能在 SELECT 子句中使用非聚合列。您按名称分组,而 SELECT 子句中的所有其他列均未分组。 如果您没有设置 ONLY_FULL_GROUP_BY 选项,MySQL 仍然会接受这个(错误的)查询,但它不会减少错误。所以你应该做的是重写查询,这样它就可以给你一个可预测的结果。欲了解更多信息,请参阅:http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode%5Fonly%5Ffull%5Fgroup%5Fby

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多