我在使用 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 列,但是由于我要处理数百万条记录,重新查询会使应用程序非常无效。