插入数据通常是简单:插入数据从一个表到另一个从一个表到另一个离开已经存在的行
SELECT * INTO A FROM B
但只是出于好奇,假设我有两个表tbl_A
和tbl_B
。我有100条记录tbl_B
和一些20排在tbl_A
(其中一些可能是两个表中常见的),我想插入来自tbl_B
行到tbl_A
哪些不是已经存在于tbl_A'
而且,让我们假设两表具有标识字段。
插入数据通常是简单:插入数据从一个表到另一个从一个表到另一个离开已经存在的行
SELECT * INTO A FROM B
但只是出于好奇,假设我有两个表tbl_A
和tbl_B
。我有100条记录tbl_B
和一些20排在tbl_A
(其中一些可能是两个表中常见的),我想插入来自tbl_B
行到tbl_A
哪些不是已经存在于tbl_A'
而且,让我们假设两表具有标识字段。
您可以使用NOT EXISTS
:
INSERT INTO tbl_A
SELECT IdCol, Col2, Col3
FROM dbo.tbl_B B
WHERE NOT EXISTS(SELECT 1 FROM tbl_A A2 WHERE A2.IdCol = B.IdCol)
我想'INSERT INTO Tbl_BankEntry_exp SELECT * FROM dbo.Tbl_BankEntry乙 WHERE NOT EXISTS(SELECT 1 FROM Tbl_BankEntry_exp A2 WHERE A2.srno = B.srno)' 但它给我'标识列的显式值在表'Tbl_BankEntry_exp'中只能在列列表被使用且IDENTITY_INSERT为ON时指定。'# – Arbaaz
@Arbaaz:这是这个问题的答案:http://stackoverflow.com/questions/2005437/an-explicit-value- for-the-identity-column-in-table-can-only-be-specified-when-a –
谢谢Tim。 btw我假设'SELECT 1 FROM'从第一个提到的表中选择行?对? – Arbaaz
我没有意识到这一点。谢谢+1 – Arbaaz
我认为这应该工作。
INSERT INTO tbl_A (IdCol, Col2, Col3)
(SELECT IdCol, Col2, Col3 FROM dbo.tbl_B AS b
WHERE b.IdCol NOT IN (SELECT Distinct IdCol FROM tbl_A))
我希望我清楚我想问什么,如果不是,请让我知道。 – Arbaaz