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'在索引中)。但是没有保证。 –