使用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值(而不是自动插入的数字)。
答案 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;
的值可能会有所不同。