列数据更改时如何获取行
Posted
技术标签:
【中文标题】列数据更改时如何获取行【英文标题】:how to get row when change in column data 【发布时间】:2012-03-31 19:13:04 【问题描述】:我有下表
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
【问题讨论】:
所以您希望根据状态之前变为Onsite
进行查询?对吗?
【参考方案1】:
尝试以下查询,即使 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);
【讨论】:
但是如果 id 不在序列中怎么办 Id |状态 |日期------------------- 1 |现场 |2007 2 |现场 |2008 3 |现场 |2009 4 |国外 |2010 5 |国外 |2011 6 |现场 |2012 7 |国外 |2013 8 |国外 |2014 19 |现场 |2015 但是如果 id 不在序列中怎么办 Id |状态 |日期------------------- 1 |现场 |2007 2 |现场 |2008 3 |现场 |2009 4 |国外 |2010 5 |国外 |2011 6 |现场 |2012 7 |国外 |2013 8 |国外 |2014 19 |现场|2015 @user1271131 我根据您的需要编辑了我的答案。现在即使没有 id 序列它也可以工作(我已经测试过了)。以上是关于列数据更改时如何获取行的主要内容,如果未能解决你的问题,请参考以下文章