我需要检查给定 ID 的地址何时更改,并显示更改日期以及(旧和新)地址。
假设我们有这些数据:
id address date
1 Long Street 2015-09-20
1 Broad Street 2015-09-30
1 Nice Road 2016-09-30
2 Black Road 2016-09-30
2 White Road 2017-01-01
所以查询的输出应该是:
1 Long Street Broad Street 2015-09-30
1 Broad Street Nice Road 2016-09-30
2 Black Road White Road 2017-01-01
很容易检查地址更改了哪些 ID 以及发生了多少次,但我不知道如何显示我实际需要的结果。
最佳答案
您可以使用相关子查询获取上一条记录的日期:
select t.id,
(select t2.address
from t t2
where t2.id = t.id and t2.date < t.date
order by t2.date desc
limit 1
) prev_address,
t.address, t.date
from t
having prev_address is not null;
having
子句的使用是 MySQL 的扩展。它的行为类似于使用列别名的 where
子句。
关于mysql - 显示给定 ID 的给定值更改的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46319681/