繁体   English   中英

在mysql表中查找特定ID的最后一条记录

[英]Find the last record for a particular ID in a mysql table

我有一个看起来像这样的MYSQL表:

+-----+-------------+----------------------------+
| id  | prev_status | date_modified              |
+-----+-------------+----------------------------+
| 236 | INIT        | 2015-11-13 08:00:53.128730 |
| 236 | REMS        | 2015-11-13 08:00:53.139382 |
| 236 | RET         | 2015-11-13 08:00:53.146587 |
| 236 | PA          | 2015-11-13 08:00:53.150409 |
| 236 | CORR        | 2015-11-13 08:00:53.157473 |
| 236 | PA          | 2015-11-13 08:00:53.165941 |
| 236 | SUB         | 2015-11-13 08:00:53.174236 |
| 236 | FILL        | 2015-11-13 08:00:53.181169 |
| 236 | SHIP        | 2015-11-13 08:00:53.183954 |
| 570 | INIT        | 2015-11-13 08:01:13.320310 |
| 570 | REMS        | 2015-11-13 08:01:13.333153 |
| 570 | RET         | 2015-11-13 08:01:13.340783 |
| 570 | PA          | 2015-11-13 08:01:13.351363 |
| 570 | SUB         | 2015-11-13 08:01:13.360626 |
| 570 | FILL        | 2015-11-13 08:01:13.368099 |
| 570 | SHIP        | 2015-11-13 08:01:13.371222 |
+-----+-------------+----------------------------+

显而易见,数据已经按ID排序了。我知道限制1将给出表中的最后一条记录。但是,我需要的是每个id的最后一条记录。在这种情况下,我需要:

 +-----+-------------+----------------------------+
 | id  | prev_status | date_modified              |
 +-----+-------------+----------------------------+
 | 236 | SHIP        | 2015-11-13 08:00:53.183954 |
 | 570 | SHIP        | 2015-11-13 08:01:13.371222 |
 +-----+-------------+----------------------------+

我将如何去做?

添加date_modified字段后,查询如下

select s.id, s.prev_status, s.date_modified from (select * from tab1 order by date_modified desc) as s group by s.id;

您可以将查询与self join一起使用。 因为您不需要创建临时文件。 表。您可以使用following获取数据。

**SELECT id,prev_status,MAX(date_modified) FROM  tabelName GROUP BY id;**

欲了解更多详情,请点击这里

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM