2016-04-15 164 views
2

我想在插入函数上添加增量值。我已经尝试了下面的代码,但没有工作。我想每次增加COLUMN1 1。 COLUMN1不是关键列。SQL插入函数(插入增量值)

@var=0; 
INSERT INTO TABLE_A (COLUMN1,COLUMN2,COLUMN3,COLUMN4) 
     SELECT @var++,COLUMN6,COLUMN7,COLUMN8 
     FROM TABLE_B; 

任何想法?

回答

2

您可以使用ROW_NUMBER来生成COLUMN1连续值:

INSERT INTO TABLE_A (COLUMN1,COLUMN2,COLUMN3,COLUMN4) 
SELECT 
    ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) - 1, 
    COLUMN6, 
    COLUMN7, 
    COLUMN8 
FROM TABLE_B; 
+0

但我想要一个独特的价值!第二次插入时会发生什么? – user2242558

+0

然后这不起作用。改为使用'IDENTITY'列。 –

+0

或用'+(SELECT MAX(COLUMN1)FROM TABLE_B')替换'-1''。但是这对于并发查询可能有问题。 –

1

您可以尝试将该列设置为IDENTITY列。如果它是一个现有列,那么你可以这样添加:

ALTER TABLE (TABLE_A) ADD NewColumn INT IDENTITY(1,1) 

ALTER TABLE (TABLE_A) DROP COLUMN COLUMN1 

sp_rename 'TABLE_A.NewColumn', 'COLUMN1', 'COLUMN' 

,然后简单地做喜欢

INSERT INTO TABLE_A (COLUMN2,COLUMN3,COLUMN4) 
SELECT 
    COLUMN6, 
    COLUMN7, 
    COLUMN8 
FROM TABLE_B; 

所以,现在你不必提供COLUMN1而做插件。每当有新行插入到表将自动填充这将是增量由1

+0

在SQL Server 2012中无法识别sp_rename函数 – user2242558

+0

@ user2242558: - 您已将问题标记为SQL Server 2008.并且sp_rename也适用于SQL Server 2012,https://msdn.microsoft.com/en-in/ library/ms188351(v = sql.110).aspx –

+0

添加2008错误!我很抱歉! – user2242558

0

您还可以使用row_number()功能为了这。将row_number添加到变量。

@var=0; 
INSERT INTO TABLE_A (COLUMN1,COLUMN2,COLUMN3,COLUMN4) 
     SELECT @var + row_number(),COLUMN6,COLUMN7,COLUMN8 
     FROM TABLE_B; 

将您的变量初始化为您想要的起始数字。道歉,如果它是短我从我的手机发布。

希望这会有所帮助。

+0

请。添加一个关于你的正确答案的例子 –