2013-04-11 54 views
0
SELECT TOP 1000000 row_number() over(ORDER by sv.number) AS num 
INTO numbertest 
from master..spt_values sv CROSS JOIN master..spt_values sv2 


SELECT TOP 1000000 IDENTITY(int,1,1) AS Number 
    INTO NumberTest 
    FROM master..spt_values sv1 
    CROSS JOIN master..spt_values s2 

我遇到过两种方法可以在表格中插入1到1000000个数字,但它不会顺序插入1到1000000?我如何以快速插入率顺序插入?最快的方法将数字插入到sql server表中?

+0

剂量不插入或不显示? – Freelancer 2013-04-11 06:39:09

+3

你如何验证它不是顺序的?你是否在不使用'ORDER BY'的情况下运行'SELECT num FROM dbo.NumberTest'? – 2013-04-11 06:43:47

+3

由于表格具有* no *固有顺序,因此“顺序”充其量是不明确的。如果您最终得到的表格包含1到1000000之间的所有数字(包括1次和1次),那么这些查询正常工作。 – 2013-04-11 06:44:53

回答

0

我的理解,你需要用序列号加1 /插入行至10,00,000(十大LAC行)

你的两个命令似乎选择命令,而不是

就真的需要插入命令添加序列号字段在你申请 的一个或 可以运行查询到任何现有的表来获得与像

用于例如,表名序列号的结果是:员工 提交姓名:姓名 注:没有的Filedsê xisting喜欢的SerialNumber

您可以运行一个命令来获取输出序列号

例如从员工选择ROW_NUMBER()OVER(ORDER BY employee.name)作为的SerialNumber,Employee.name

你的结果会是怎样

的SerialNumber名 1 ABC 2 XYZ

0

我有表中的数字我的数据库,我填写以下查询。

CREATE TABLE [dbo].[NUMBERS] (
    [number] INT IDENTITY (1, 1) NOT NULL 
); 

set Identity_insert dbo.Numbers oN 

declare 
    @row_count int, 
    @target_rows int 

set @target_rows = 1048576 
set @row_count = null 

while (1 = 1) begin 
    if (@row_count is null) begin 
    insert into Numbers ([number]) values (1) 
    end 
    else begin 
    insert into Numbers ([number]) 
    select [number] = [number] + @row_count 
    from Numbers 
    end 

    set @row_count = isnull(@row_count, 0) + @@rowcount 

    if (@row_count >= @target_rows) begin 
    break 
    end 
end 
相关问题