MySql:使用上一个不同的值获取记录

时间:2018-01-13 10:18:03

标签: mysql

这是我的表数据

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获取所有值,并使用最后更改的名称。

就像我有值为XYZ且id = 9且状态=" START"价值ABC id = 11且状态=" START"。

后价值发生变化

因此,上次更改名称所需的值为状态" START"和"停止"。

单一查询是否可行?或者我需要使用多个查询?

1 个答案:

答案 0 :(得分:0)

可能有一个更简单的解决方案,但这是一个想法...

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');