从其他表中插入数据在sql server中

从其他表中插入数据在sql server中

问题描述:

我在table_3中有一些记录,我想将该记录插入table_2,但第一列(Id)的值将是(NUMBER + 1)table_1。我的代码是从其他表中插入数据在sql server中

INSERT INTO TABLE_2(Id,NAME) 
SELECT (SELECT MAX(NUMBER) FROM TABLE_1)+1 AS Id,name 
FROM TABLE_3 

TABLE_1计数为200和TABLE_3计数为10.我希望新插入的ID是一样

(201,202,203,204,205,206,207,208,209,210)

但是从查询我越来越像...

(201,201,201,201,201,201,201,201,201,201)

,你可以这样做只是使用ROW_NUMBER()group by

INSERT INTO TABLE_2(Id,NAME) 
SELECT MAX(NUMBER) + ROW_NUMBER() OVER (ORDER BY name),name 
FROM TABLE_3 
group by name 
only one select
+0

像一个魅力工作。谢谢Farhang。 – 2015-02-08 14:48:44

+1

你非常欢迎Naila。 – jfun 2015-02-08 14:49:39

在您的查询(SELECT MAX(NUMBER) FROM TABLE_1)+1始终是相同的,因为MAX(NUMBER)只是200

如果你想以1为插入每个新记录递增,开始(SELECT MAX(NUMBER) FROM TABLE_1)+1,试试这个:

INSERT INTO TABLE_2 (Id, NAME) 
SELECT Id + rn, name 
FROM (
    SELECT (SELECT MAX(NUMBER) FROM TABLE_1) AS Id, name, 
      ROW_NUMBER() OVER (ORDER BY name) AS rn 
    FROM TABLE_3) t 
+0

ooopss ..还有没有其他办法可以做到这一点?我有大约30列。我必须一次又一次地写下它们。 – 2015-02-08 14:34:57

+0

@NailaAkbar您可以通过在表格模式中添加一列以及样本数据来编辑OP吗? – 2015-02-08 14:36:44

+0

OP是什么意思? – 2015-02-08 14:39:04