2012-03-15 60 views
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查询,当状态从“国外”改为“现场”返回的记录。 在上述情况下查询将返回我以下行:

6 | Onsite |2012 
9 | Onsite |2015 
+0

所以你想根据查询什么*之前的状态*变成了“现场”?那是对的吗? – dldnh 2012-03-15 09:35:05

回答

2

尝试以下查询其作品即使IDS不是一个序列:

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); 
+0

嘿谢谢KorhanÖztürk你的查询很有帮助 – Vipul 2012-03-15 10:26:09

+0

但是如果id没有按顺序怎么办 Id |状态|日期 ------------------- 1 |现场| 2007 2 |现场| 2008 3 |现场| 2009 4 |国外| 2010 5 |国外| 2011 6 |现场| 2012 7 |国外| 2013 8 |国外| 2014
19 |现场| 2015 – Vipul 2012-03-15 10:44:14

+0

但如果id不在序列Id |中状态|日期------------------- 1 |现场| 2007 2 |现场| 2008 3 |现场| 2009 4 |国外| 2010 5 |国外| 2011 6 |现场| 2012 7 |国外| 2013 8 |国外| 2014 19 |现场| 2015 – Vipul 2012-03-15 10:51:33