如何在列数据更改时获取行

时间:2012-03-15 09:30:09

标签: mysql mysql5 mysql-5.1 mysql-5.0

我有下表

Id  | Status | date
-------------------
1   | Onsite |2007
2   | Onsite |2008
3   | Onsite |2009
4   | Abroad |2010
5   | Abroad |2011
6   | Onsite |2012
7   | Abroad |2013
8   | Abroad |2014
9   | Onsite |2015

我想在MySQL中查询,当状态从“Abroad”变为“Onsite”时返回记录。 在上面的案例中,查询将返回以下行:

6  | Onsite |2012
9  | Onsite |2015

1 个答案:

答案 0 :(得分:2)

尝试以下查询,即使ID不在序列中也能正常运行:

SELECT * 
FROM 'table_name' t
WHERE t.status = 'Onsite' and 
       EXISTS(SELECT t1.id 
               FROM 'table_name' t1 
               WHERE t1.status = 'Abroad' and t1.id<t.id
               ORDER BY t1.id DESC 
               LIMIT 1,1);