MySQL-分组方式和订单方式描述

MySQL-分组方式和订单方式描述,mysql,group-by,Mysql,Group By,表:uuid、版本、日期时间 版本不是唯一的,但其思想是只获取具有给定uuid的最新日期时间的行 从uuid='bla'按版本顺序按日期时间描述分组的表中选择* 。。。当然可以获取datetime asc结果-是否有方法将group by预排序为desc,以便只获取最新版本?由于表中只有这3个字段,并且您按uid进行过滤,因此您可以使用MAX而不使用联接: SELECT version, MAX(datetime) Maxdatetime FROM table WHERE uuid='bla'

表:uuid、版本、日期时间

版本不是唯一的,但其思想是只获取具有给定uuid的最新日期时间的行

从uuid='bla'按版本顺序按日期时间描述分组的表中选择*


。。。当然可以获取datetime asc结果-是否有方法将group by预排序为desc,以便只获取最新版本?

由于表中只有这3个字段,并且您按uid进行过滤,因此您可以使用MAX而不使用联接:

SELECT version, MAX(datetime) Maxdatetime
FROM table
WHERE uuid='bla'
GROUP BY version
但是,如果表中有更多字段,或者您没有按uid进行筛选,则需要首先获取每个版本的最大日期时间,然后选择行:

SELECT t.uuid, t.version, t.datetime 
FROM table t JOIN (
    SELECT version, MAX(datetime) Maxdatetime
    FROM table
    WHERE uuid='bla'
    GROUP BY version
) r ON t.version = r.version AND t.datetime = r.Maxdatetime
WHERE t.uuid='bla'
ORDER BY t.datetime desc

对我来说,有一个更好的方法,您可以通过以下方式向组中添加描述:

从uuid='bla'按版本说明分组的表中选择*


它之所以有效是因为我的id是生成的,所以最新的id总是意味着最新的日期时间

这正是我所需要的,只需稍加修改-谢谢!有必要把WHERE子句重复两次吗?为什么没有人看到这个。。。这是一个工作和简单的查询:DNice,但只有在按排序顺序插入datetime时才能工作
SELECT * FROM 
(SELECT * FROM table WHERE uuid='bla' ORDER BY datetime desc) table 
GROUP BY version;