开发者社区> 问答> 正文

选择3条最新记录,其中一列的值是不同的?mysql

我有下表:

id       time      text      otheridentifier
-------------------------------------------
1        6         apple     4
2        7         orange    4
3        8         banana    3
4        9         pear      3
5        10        grape     2

我想做的是选择3条最近的记录(按时间desc),它们的otheridentifiers是不同的。因此,在这种情况下,结果将是id:5、4和2。

id= 3将被跳过,因为有相同otheridentifier字段的最近记录。

这是我尝试做的事情:

SELECT * FROM table GROUP BY (otheridentifier) ORDER BY time DESC LIMIT 3 然而,我最终得到的行id= 5,3,和1而不是5,4,2按预期方式。

有人可以告诉我为什么这个查询不会返回我期望的结果吗?我尝试将ORDER BY更改为ASC,但这只是将返回的行重新排列为1、3、5。

展开
收起
保持可爱mmm 2020-05-16 22:06:52 325 0
1 条回答
写回答
取消 提交回答
  • 它不会返回您期望的结果,因为分组是在排序之前发生的,这从子句在SQL语句中的位置反映出来。不幸的是,您将不得不变得更加幻想才能获得想要的行。尝试这个:

    SELECT * FROM table WHERE id = ( SELECT id FROM table as alt WHERE alt.otheridentifier = table.otheridentifier ORDER BY time DESC LIMIT 1 ) ORDER BY time DESC LIMIT 3来源:stack overflow

    2020-05-16 22:09:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像