选择row_number或假身份

Jam*_*son 1 sql t-sql sql-server

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

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

select*from table其中row_number> 821

我已经尝试过row_number()但是我不能让它们被命令,我需要返回821以上的所有行.

Aar*_*and 5

桌子是一排无序的行.您无法识别插入的前820行,除非您有一些列来标识插入顺序(例如,可信的IDENTITY或datetime列).否则你在地板上扔了一堆弹珠,并要求第一个走进房间的人识别掉掉的前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;
Run Code Online (Sandbox Code Playgroud)

结果:

---- ---- ----
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
Run Code Online (Sandbox Code Playgroud)

SQLfiddle演示