我需要编辑表格中存在的数据。编辑后,我想保留旧数据的副本。因此,我使用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
帮助表示感谢。
谢谢。
答案 0 :(得分:2)
select * from yourtable
where id in(select max(id) from yourtable group by data_id)
它的工作正常。 SQL FIDDLE
答案 1 :(得分:1)
你可以试试这个:
select * from data where (data_id, id ) in ( select data_id, max(id) from data group by Data_id );