获取1列上每个唯一值的最新值

时间:2018-04-18 20:15:28

标签: mysql

我有以下demo

cid  uid  unixdate
110   90  129
109   85  128
108   81  127
107   90  126
106   85  125
105   70  124

我想创建一个sql select,每个uid只能获得一行,看起来像这样

cid  uid  unixdate
110   90  129
109   85  128
108   81  127
105   70  124

但结果应该是最新的条目(使用unixdate DESC排序)

尝试了this example的所有内容,看起来非常相似,例如这些查询

SELECT * FROM demo GROUP BY uid ORDER BY unixdate DESC

SELECT * From demo GROUP BY uid HAVING COUNT(*) >=1 order by unixdate DESC

但他们没有得到最新的,但每个UID的第一个条目(而不是最新的)

注意运行mysql Server版本:5.7.21-0ubuntu0.16.04.1 - (Ubuntu)并使用phpmyadmin接口执行sql查询

2 个答案:

答案 0 :(得分:1)

问题是 group by 将始终返回结果集中组中的第一条记录。这是有效的解决方案。

SELECT * FROM demo WHERE unixdate IN 
( SELECT MAX(unixdate) FROM demo GROUP BY uid ) 
ORDER BY unixdate  

答案 1 :(得分:0)

试试这样:

SELECT * FROM demo GROUP BY uid ORDER BY unixdate DESC;

其中demo是表的名称。

SQL小提琴:http://sqlfiddle.com/#!9/2eb3d0/1