为每个ID获取最后一行

时间:2013-06-06 05:12:37

标签: mysql

我正在使用像

这样的查询
select * from audittable where a_id IN (1,2,3,4,5,6,7,8);

对于每个ID,它返回5-6条记录。我想获得每个ID的最后一条记录。 我可以在一个sql语句中执行此操作。

3 个答案:

答案 0 :(得分:0)

尝试此查询

SELECT 
   * 
FROM 
   (SELECT 
       @rn:=if(@prv=a_id, @rn+1, 1) as rId,
       @prv:=a_id as a_id,
       ---Remaining columns
   FROM 
       audittable
   JOIN
       (SELECT @rn:=0, @prv:=0) t
   WHERE
       a_id IN (1,2,3,4,5,6,7,8)
   ORDER BY 
       a_id, <column> desc)tmp --Replace column with the column with which you will determine it is the last record
WHERE 
   rId=1;

答案 1 :(得分:0)

如果您的数据库中有DateCreated或任何column正在保存DateTime,以及为特定行插入数据时,您可以使用< / p>

select at1.* from audittable at1 where 
datecreated in( select max(datecreated) from audittable at2
where 
at1.id = at2.id
order by datecreated desc
);

您也可以使用LIMIT功能。

希望你理解并为你工作。

答案 2 :(得分:0)

在SQLite中,您有列a_id和b。对于每个a_id,你得到一组b。你想要的 获取最新的/最高的(在row_id,日期或其他自然增长指数方面最大)b中的一个

SELECT MAX(b), *
FROM audittable
GROUP BY a_id

此处 MAX 有助于从每个组中获取最大 b

MySQL没有将MAX b与表的其他*列相关联的坏消息。但它仍然可以用于带有a_id和b列的简单表格!