在MySQL5.7.22表中,sql查询很难选择5个最新的、唯一的条目。例如,下面是“活动”表:
uaid nid created
9222 29722 2018-05-17 03:19:33
9221 31412 2018-05-17 03:19:19
9220 31160 2018-05-16 23:47:34
9219 31160 2018-05-16 23:47:30
9218 31020 2018-05-16 22:35:59
9217 31020 2018-05-16 22:35:54
9216 28942 2018-05-16 22:35:20
...
所需的查询应按以下顺序按“nid”属性返回5个最新的、唯一的条目(但只需要nid属性):
uaid nid created
9222 29722 2018-05-17 03:19:33
9221 31412 2018-05-17 03:19:19
9220 31160 2018-05-16 23:47:34
9218 31020 2018-05-16 22:35:59
9216 28942 2018-05-16 22:35:20
我尝试了各种不同的组合,但都不起作用,即:
select distinct nid from activity order by created desc limit 5
按nid返回5个最新uniq条目的正确查询是什么?
2条答案
按热度按时间l7wslrjt1#
可以使用子查询和联接
2vuwiymt2#
你的问题是最简单的一组问题。一般来说,在mysql中处理这个问题是一个非常头疼的问题,因为mysql不支持分析函数(至少在现在人们在生产中使用的大多数版本中是不支持的)。但是,因为您只需要每个组的第一条记录,所以我们可以执行一个join to subquery来查找最大值
created
每个的值nid
组。演示