我有以下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查询
答案 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
是表的名称。