当我运行这个查询时,我得到的行比没有ROW_NUMBER ()
行的类似查询更多:
SELECT DISTINCT id, value,
ROW_NUMBER () OVER (PARTITION BY (id)
ORDER BY value DESC NULLS LAST ) max
FROM TABLE1
WHERE id like '%1260' ORDER BY id ASC
字符串
VS
SELECT DISTINCT id, value
FROM TABLE1
WHERE id like '%1260' ORDER BY id ASC
型
为什么会发生这种情况,如何解决?
3条答案
按热度按时间yvt65v4c1#
这样想吧:如果有两行具有相同的id和value,则第二个查询将提供一行具有不同的id,value对。第一种方法给出两行,一行的row_number()为1,另一行的row_number()为2。
对于以下数据:
字符串
查询1将返回
型
查询2将返回
型
azpvetkf2#
因为添加了行号,所以行不再相同,所以
DISTINCT
不做任何事情。避免这种情况的一种方法是在使用DISTINCT
后添加行号 *。字符串
(我不确定语法是否适合Oracle,可能需要稍微调整。
wtzytmuj3#
如果您正在使用Oracle 11g R2,请尝试此操作。
字符串