2015-06-10 99 views
0

从表中选择最新的结果,我有如下表:使用SQL查询

Data Table

select声明我要的是每个policy最新的唯一行(绿色)。部分原因policy信息将从前一天(所有policies将不会在同一天发布)。

在这种情况下,ACB1已将她的last namesamounts更改。

+1

你尝试什么SQL查询到目前为止,什么是输出? – sfrutig

回答

2

这将通过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 
1

使用row_number窗函数:

select * from 
    (select *, row_number() over(partition by policy order by id desc) rn from TableName) t 
where rn = 1 
+0

我会使用这种技术,因为它更清晰。另外,我们应该检查这个查询的执行计划和被接受的答案的执行计划,但我相信这应该会带来更好的性能。 – gotqn

0

也许,如果,而不是从数据库中选择所有字段,你做一个where ID=MAX()选择最大的ID。

所以你会:

SELECT `id`,`firstname`,`lastname`,`policy`,`amount`,`created` 
FROM `tablename` WHERE `id`=MAX()