SET NOCOUNT ON; USE master; GO ----判断数据库TestDB是否存在,即创建数据库 IF db_id('TestDB') IS NULL CREATE DATABASE TestDB GO USE TestDB GO ---判断Nums 表是否存在,存在即将其删除 IF OBJECT_ID('dbo.Nums') IS NOT NULL DROP TABLE dbo.Nums; GO ---重新创建表 CREATE TABLE dbo.Nums( id int NOT NULL PRIMARY KEY, name nvarchar(50) NULL ); DECLARE @max AS int,@rc AS int; SET @max=250000; SET @rc=1; INSERT INTO dbo.Nums(id,name) VALUES(1,'张三'); /* 模拟其执行过程 SELECT id+1,'张三' FROM dbo.Nums INSERT INTO dbo.Nums(id,name) SELECT id+1,'张三' FROM dbo.Nums SELECT id+2,'张三' FROM dbo.Nums INSERT INTO dbo.Nums(id,name) SELECT id+2,'张三' FROM dbo.Nums SELECT id+4,'张三' FROM dbo.Nums INSERT INTO dbo.Nums(id,name) SELECT id+4,'张三' FROM dbo.Nums select * from dbo.Nums */ WHILE @rc*2<=@max BEGIN INSERT INTO dbo.Nums(id,name) SELECT id+@rc,'张三' FROM dbo.Nums SET @rc=@rc*2; END print(@rc) INSERT INTO dbo.Nums(id,name) SELECT id+@rc,'张三' FROM dbo.Nums WHERE id+@rc<=@max GO select top 100 * from Nums where id not in (select top 900 id from Nums order by id asc) order by id asc select * from (select top 100 * from (select top 1000 id from Nums order by id asc) a order by a.id desc) b order by b.id asc
相关文章: