Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查询以获取表中某行更改的开始和结束日期_Mysql_Sql - Fatal编程技术网

Mysql 查询以获取表中某行更改的开始和结束日期

Mysql 查询以获取表中某行更改的开始和结束日期,mysql,sql,Mysql,Sql,我有一张这样的桌子: id … value … date_added 1 … value1 … some date 1 … value2 … some date 1 … value3 … some date 1 … value4 … some date 2 … value5 … some date 2 … value6 … some date id … value … date_st

我有一张这样的桌子:

id  …   value   …   date_added
1   …   value1  …   some date
1   …   value2  …   some date
1   …   value3  …   some date
1   …   value4  …   some date
2   …   value5  …   some date
2   …   value6  …   some date
id  …   value   …   date_start      date_end
1   …   value1  …   some date       some date
1   …   value2  …   some date       some date
1   …   value3  …   some date       some date
1   …   value4  …   some date       some date
2   …   value5  …   some date       some date
2   …   value6  …   some date       
我想要这样的东西:

id  …   value   …   date_added
1   …   value1  …   some date
1   …   value2  …   some date
1   …   value3  …   some date
1   …   value4  …   some date
2   …   value5  …   some date
2   …   value6  …   some date
id  …   value   …   date_start      date_end
1   …   value1  …   some date       some date
1   …   value2  …   some date       some date
1   …   value3  …   some date       some date
1   …   value4  …   some date       some date
2   …   value5  …   some date       some date
2   …   value6  …   some date       

因此,需要一个查询来获取每一行被添加到表中的日期以及它被更改的日期


你是怎么做到的?非常感谢。

您可以查询结束日期作为当前行之后的第一个更改日期:

select  id
,       value
,       date_start
,       (
        select  date_start
        from    YourTable yt2
        where   yt1.id = yt2.id
                and yt1.date_start < yt2.date_start
        order by
                yt2.date_start
        limit   1
        ) as date_end
from    YourTable yt1

获取每一行添加到表中的日期以及更改的日期。您可以使用时间戳字段进行此操作。搜索MySQL文档。您的id列是唯一的吗?主键在哪里?id列是外键,它不是唯一的一对多关系。