0
我有一個查詢如下...更改選擇列表中的影響記錄選定
select *
from (select COL1, COL2, COL3,
ROW_NUMBER() OVER (PARTITION BY COL2,COL3 ORDER BY COL2,COL3) AS rn
from TABLE
) t
where rn = 1
它返回預期結果。當我修改外選擇明確要求列沒有行號列從而...
select COL1, COL2, COL3 from
from (select COL1, COL2, COL3,
ROW_NUMBER() OVER (PARTITION BY COL2, COL3 ORDER BY COL2, COL3) AS rn from TABLE
) t
where rn = 1
我得到不同的結果。事實上,返回的COL1,COL2和COL3列中的值的組合實際上不存在於數據庫中的任何行中。
我是否瘋了,發現了一個錯誤或更可能,我誤解這應該如何工作?
非常感謝。你的回答不僅解釋了我所看到的,而且還幫助我認識到,我認爲沒有任何迴歸的行確實存在就是謊言。 – Glen
我明白你的意思。所以分區由col2,col3命令應該是col1對嗎?我只是自己嘗試過,無論我嘗試過多少次,都發現它只是由col1訂購。數據庫中是否有默認的訂單? –
@ Raffaello.D.Huke。 。 。有些情況下SQL Server可能會按特定的順序處理事物(例如,如果'col1','col2'和'col3'在索引中)。但是沒有保證。 –