使用自动增量合并两个SQL Server表的数据

时间:2018-07-18 20:35:12

标签: sql sql-server merge

使用SQL Server,我有两个要合并的表。表2的tbID列的值为NULL。我希望在合并表时从Table1从表1的tbID列的下一个值开始自动更新NULL值。

我正在输入这样的内容。

SELECT 
    A.tbID,
    A.etID,
    A.cNumber,
    A.cName
FROM 
    Table1 AS A

UNION ALL

SELECT 
    B.tbID,
    B.etID,
    B.cNumber,
    B.cName
FROM 
    Table2 AS B

我的结果在表2的记录中具有NULL值(而不是自动插入的数字)。

2 个答案:

答案 0 :(得分:1)

如果通过“合并”希望所有记录都以table1结尾-只需将id列保留在插入项之外即可:

INSERT INTO table1 (etID, cNumber, cName)
SELECT etID, cNumber, cName
FROM table2

如果您只想选择并查看来自table2的数据的递增ID,这是一种方法:

SELECT A.tbID,
       A.etID,
       A.cNumber,
       A.cName
FROM Table1 AS A

UNION ALL

SELECT (SELECT MAX(tbID) FROM Table1) + 
        ROW_NUMBER() OVER (ORDER BY B.etID),
       B.etID,
       B.cNumber,
       B.cName
FROM Table2 AS B

答案 1 :(得分:1)

如果只需要一个结果集,则可以使用:

"success, * when needed *"

如果您要将这些行插入到新表中,则可以自动分配ID-但SELECT A.tbID, A.etID, A.cNumber, A.cName FROM Table1 A UNION ALL SELECT (a.maxID + ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) as tbID, B.etID, B.cNumber, B.cName FROM Table2 B CROSS JOIN (SELECT MAX(A.tbID) as maxID FROM Table1 as A) a; 的值可能会有所不同。