【发布时间】:2011-06-10 14:58:10
【问题描述】:
我有以下查询可以满足我的要求,但我怀疑没有子查询也可以做到这一点:
SELECT *
FROM (SELECT *
FROM 'versions'
ORDER BY 'ID' DESC) AS X
GROUP BY 'program'
我需要的是按程序分组,但返回“ID”值最高的版本中的对象的结果。
根据我过去的经验,像这样的查询应该在 MySQL 中工作,但由于某种原因,它不是:
SELECT *
FROM 'versions'
GROUP BY 'program'
ORDER BY MAX('ID') DESC
我想要做的是让 MySQL 先执行 ORDER BY,然后执行 GROUP BY,但它坚持先执行 GROUP BY,然后再执行 ORDER BY .即它是对分组的结果进行排序,而不是对排序的结果进行分组。
当然不能写
SELECT * FROM 'versions' ORDER BY 'ID' DESC GROUP BY 'program'
谢谢。
【问题讨论】:
-
如果在 GROUP BY 之前运行,ORDER BY 没有价值
-
也许这个链接可以帮助你 - stackoverflow.com/questions/3695502/…
-
检查这个链接。这正是你想要的 - dev.mysql.com/doc/refman/5.0/en/…
标签: sql mysql group-by sql-order-by subquery