0

我需要编辑表中存在的数据。编辑后,我想保留旧数据的副本。update因此,我没有使用语句,而是使用aninsert将新的更新数据插入到同一个表中。两组数据有一定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。

假设我想获取Data2ie id 4& Data1ie的最新更新记录id 2,我正在尝试使用:

-> select("*") 
-> from("data")
-> groupBy("Data_id")

正如所料,这将返回Data1& Data2,我将如何返回Data1_edit1and Data2_edit1

我正在使用Doctrine 2Mysql

帮助表示赞赏。

谢谢你。

4

2 回答 2

2
select * from yourtable
where id in(select max(id) from yourtable group by data_id)

它工作正常。SQL 小提琴

SQL 小提琴演示

于 2012-09-27T10:27:54.527 回答
1

你可以试试这个:

select * from data where (data_id, id ) in ( select data_id, max(id) from data group by Data_id );
于 2012-09-27T10:14:33.547 回答