GROUP BY导致ORDER BY不起作用

时间:2013-06-11 20:55:36

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

这是我的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的最后一行。

1 个答案:

答案 0 :(得分: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