获取最新更新记录Doctrine Mysql

时间:2012-09-27 09:53:20

标签: mysql select doctrine-orm

我需要编辑表格中存在的数据。编辑后,我想保留旧数据的副本。因此,我使用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& Data1id 2,我试图使用以下方式执行此操作:

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

正如预期的那样,这将返回Data1& Data2,我如何才能返回Data1_edit1Data2_edit1

使用Doctrine 2Mysql

帮助表示感谢。

谢谢。

2 个答案:

答案 0 :(得分:2)

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

它的工作正常。 SQL FIDDLE

SQL Fiddle Demo

答案 1 :(得分:1)

你可以试试这个:

select * from data where (data_id, id ) in ( select data_id, max(id) from data group by Data_id );