[英]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.