我需要编辑表中存在的数据。编辑时,我想保留旧数据的副本。因此,我没有使用 update
语句,而是使用 insert
将新更新的数据插入到同一个表中。两组数据都有相同的特定id
,它可以帮助我跟踪更改。该表还具有autoincrement
字段。如下所示:
> id Data Data_id
> 1. Data1 01
> 2. Data1_edit1 01
> 3. Data2 02
> 4. Data2_edit1 02
id 是autoincrement
的,Data_id有助于记录更改。该表也timestampable
。这样 Data1 的时间戳将低于 Data1_edit1。
假设我想获取Data2
的最新更新记录,即id
4
Data1
即id
2
,我正在尝试使用以下方法执行此操作:
-> select("*")
-> from("data")
-> groupBy("Data_id")
正如预期的那样,这将返回Data1
& Data2
,我如何能够返回Data1_edit1
和Data2_edit1
?
正在使用Doctrine 2
和Mysql
感谢帮助。
谢谢。
select * from yourtable
where id in(select max(id) from yourtable group by data_id)
它工作正常。SQL FIDDLE
SQL 小提琴演示
你可以试试这个:
select * from data where (data_id, id ) in ( select data_id, max(id) from data group by Data_id );