ID 列が追加されていないテーブルがあります。特定の目的のためには本当に必要ありません。
821 行あり、さらに 500 行のテストを行いました。これらの 500 個のファイルをチェックする必要があり、簡単な方法を探していました。
select * from table where row_number > 821
row_number() を試しましたが、並べ替えることができません。821 を超えるすべての行を返す必要があります。
ID 列が追加されていないテーブルがあります。特定の目的のためには本当に必要ありません。
821 行あり、さらに 500 行のテストを行いました。これらの 500 個のファイルをチェックする必要があり、簡単な方法を探していました。
select * from table where row_number > 821
row_number() を試しましたが、並べ替えることができません。821 を超えるすべての行を返す必要があります。
テーブルは、順序付けられていない行のバッグです。挿入の順序を識別するための列 (たとえば、信頼できる IDENTITY または datetime 列) がない限り、挿入された最初の 820 行を識別することはできません。そうしないと、床にビー玉を投げて、最初に部屋に入ってきた人に、最初に落ちた 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