从表中选择最新的结果,我有如下表:使用SQL查询
从select
声明我要的是每个policy
最新的唯一行(绿色)。部分原因policy
信息将从前一天(所有policies
将不会在同一天发布)。
在这种情况下,ACB1
已将她的last names
和amounts
更改。
从表中选择最新的结果,我有如下表:使用SQL查询
从select
声明我要的是每个policy
最新的唯一行(绿色)。部分原因policy
信息将从前一天(所有policies
将不会在同一天发布)。
在这种情况下,ACB1
已将她的last names
和amounts
更改。
这将通过ID列获得每个策略的最新行:
SELECT id, policy, first, last, amount, created
FROM yourtable yt
INNER JOIN
(SELECT policy,MAX(id) as id
FROM yourtable
GROUP BY policy) maxid ON yt.policy = maxid.policy
AND yt.id = maxid.id
使用row_number
窗函数:
select * from
(select *, row_number() over(partition by policy order by id desc) rn from TableName) t
where rn = 1
我会使用这种技术,因为它更清晰。另外,我们应该检查这个查询的执行计划和被接受的答案的执行计划,但我相信这应该会带来更好的性能。 – gotqn
也许,如果,而不是从数据库中选择所有字段,你做一个where ID=MAX()
选择最大的ID。
所以你会:
SELECT `id`,`firstname`,`lastname`,`policy`,`amount`,`created`
FROM `tablename` WHERE `id`=MAX()
你尝试什么SQL查询到目前为止,什么是输出? – sfrutig