我正在使用像
这样的查询select * from audittable where a_id IN (1,2,3,4,5,6,7,8);
对于每个ID,它返回5-6条记录。我想获得每个ID的最后一条记录。 我可以在一个sql语句中执行此操作。
答案 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列的简单表格!