插入连续的数字

时间:2010-05-26 18:08:20

标签: sql-server tsql

我有一个表A(Acons,A1,A2,A3),我应在其中插入另一个表B中包含列(B1,B2,B3)的信息。 Acons是一个列,其中应包含一些连续的数字(它不是一个身份,我不能使它成为身份)。我知道xmin - 从序号开始必须计算序列。如何使用单个Insert语句将行插入表A?

我尝试了以下内容,但它不起作用:

DECLARE @i AS INT;

SET @i = xmin;    

INSERT INTO A(Acons, A1, A2, A3)
SELECT @i = (Bcons = (@i + 1)), B1, B2, B3
FROM B

不幸的是,上述解决方案不起作用;

3 个答案:

答案 0 :(得分:3)

您已经有一组行来生成数字以添加到Bcons。它在SQL Server 2000中比较棘手,但有人希望你使用的是SQL Server 2005 +

WITh cNumbers AS
(
    SELECT
        ROW_NUMBER() OVER (ORDER BY Bcons) AS Number,
        Bcons, B1, B2, B3
    FROM
        B
)
INSERT INTO A (Acons, A1, A2, A3)
SELECT
    Bcons + Number /* need -1 here? */, B1, B2, B3
FROM
    cNumbers

正如Philip Kelley所说,我们不需要CTE。卫生署。

SELECT
    Bcons + ROW_NUMBER() OVER (ORDER BY Bcons) /* need -1 here? */, B1, B2, B3
FROM
    B

答案 1 :(得分:0)

我不知道xmin来自哪里,但试试吧。

DECLARE @i AS INT;
SET @i = xmin; 
Insert into A
Select @i+1,b1,b2,b3 from B

答案 2 :(得分:0)

这是另一种方法:

DECLARE @i AS INT;
SET @i = xmin;
insert into a
select ((ROW_NUMBER() OVER (ORDER BY b1))+@i) AS Number,b1,b2,b3 from b

- 重新编辑