mysql:获取具有最后不同值的记录

o8x7eapl  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(307)

这是我的表格数据

id | name | Status
-----------------
1    ABC    Sys START
2    ABC    START  
3    ABC    STOP
4    ABC    Sys START
5    ABC    START
6    ABC    STOP
7    ABC    Sys STOP
8    ABC    Sys START
9    XYZ    START
10    XYZ    STOP
11    ABC    Sys STOP
12    ABC    Sys START
13   ABC    START
14    ABC    STOP
15    ABC    Sys STOP
16    ABC    Sys START
17    ABC    START
18    ABC    STOP
19    ABC    Sys STOP
20    ABC    Sys START
21    ABC    START
22    ABC    STOP
23    ABC    Sys STOP
24    ABC    Sys START

期望输出

13    ABC    START
14    ABC    STOP
17    ABC    START
18    ABC    STOP
21    ABC    START
22    ABC    STOP

我只想用start和stop来获取所有的值。
就像我有一个id=9,status=“start”的值xyz和一个 id=11,status=“start”的值。
最后更改的名称的状态为“开始”和“停止”时需要so值。
单次查询是否可行?或者我需要使用多个查询?

6ju8rftf

6ju8rftf1#

也许有一个更简单的解决方案,但这里有一个想法。。。

SELECT x.* 
  FROM my_table x
  JOIN
     ( SELECT name
            , MAX(id) prev 
         FROM my_table 
        WHERE status IN ('START','STOP') 
        GROUP 
           BY name
     ) y
    ON y.name <> x.name
   AND y.prev < x.id 
 WHERE x.status IN ('START','STOP');

相关问题