【发布时间】:2013-06-10 22:39:07
【问题描述】:
我在使用 Oracle 查询时遇到问题,其基本目标是获取每个重复出现的行的最后一行,但是您可以从数据中理解一个复杂的问题:
假设我有一个如下所示的表格:
ID | COL1 | COL2 | COL3 | UPDATED_DATE
------|------|------|------|-------------
001 | a | b | c | 14/05/2013
002 | a | b | c | 16/05/2013
003 | a | b | c | 12/05/2013
您应该能够猜到,由于第 1 到第 3 列对于所有 3 行具有相同的值,因此它们是重复出现的数据。问题是,我想获取最新更新的行,即第 2 行。
如果表没有 ID 列,我有一个现有的查询,但我仍然需要该列,所以如果有人能帮助我指出我做错了什么,那就太好了。
select col1,
col2,
col3,
max(updated_date)
from tbl
order by col1, col2, col3;
上面的查询返回我第 2 行,这是正确的,但我仍然需要 ID。
注意:我知道我可以用另一个基于 4 列选择 ID 列的查询来封装上述查询,但由于我要处理数百万条记录,重新查询会使应用程序非常无效.
【问题讨论】: