gpt4 book ai didi

sql - 选择 row_number 或假身份

转载 作者:行者123 更新时间:2023-12-01 22:38:36 26 4
gpt4 key购买 nike

我有一个没有添加标识列的表。我真的不需要出于任何特定目的。

我有 821 行,我又测试了 500 行。现在我需要检查这 500 个文件,我正在寻找一种简单的方法来

select * from table where row_number > 821

我试过 row_number() 但我无法对它们进行排序,我需要返回所有高于 821 的行。

最佳答案

一个表是一个无序的行包。您无法识别插入的前 820 行,除非您有一些列来识别插入顺序(例如,受信任的 IDENTITY 或日期时间列)。否则,您就是在地板上扔了一堆弹珠,并要求第一个走进房间的人找出掉落的前 820 个弹珠。

这是一个非常简单的例子,它证明输出顺序无法预测,当然也不能依赖于 FIFO(并且还显示了 HABO 的“解决方案”中断的情况):

CREATE TABLE dbo.foo(id INT, x CHAR(1));

CREATE CLUSTERED INDEX x ON dbo.foo(x);

-- or CREATE INDEX x ON dbo.foo(x, id); -- doesn't require a clustered index to prove

INSERT dbo.foo VALUES(1,'z');
INSERT dbo.foo VALUES(2,'y');
INSERT dbo.foo VALUES(3,'x');
INSERT dbo.foo VALUES(4,'w');
INSERT dbo.foo VALUES(5,'v');
INSERT dbo.foo VALUES(6,'u');
INSERT dbo.foo VALUES(7,'t');
INSERT dbo.foo VALUES(8,'s');

SELECT TOP (5) id, x, ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM dbo.foo;

SELECT * FROM dbo.foo;

结果:

---- ---- ----
8 s 1
7 t 2
6 u 3
5 v 4
4 w 5

---- ----
8 s
7 t
6 u
5 v
4 w
3 x
2 y
1 z

SQLfiddle demo

关于sql - 选择 row_number 或假身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19186076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com