这是我的格言;

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

问题是,我没有得到系统的最新日期;相反,它只得到最后一行。

最佳答案

实际上你的问题完全错了。不能在SELECT子句中使用非聚合列。您可以按名称分组,而SELECT子句中的所有其他列都不按分组。
如果您没有“只按组完整”选项,MySQL仍然会接受这个(错误的)查询,但这并不能减少它的错误。因此,您应该重写查询,以便它确实给您一个可预测的结果。有关详细信息,请参见:http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode%5Fonly%5Ffull%5Fgroup%5Fby

关于mysql - GROUP BY导致ORDER BY不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17053662/

10-13 02:59