Home Forums SQL Server 2012 SQL Server 2012 - T-SQL Insert Into Where NOT Exists RE: Insert Into Where NOT Exists
December 28, 2017 at 2:27 pm
Lynn Pettis - Thursday, December 28, 2017 1:59 PMshannonphillips - Thursday, December 28, 2017 1:32 PMBackground, I have imported dirty data with duplicate rows and bad field names into a Table called ImpTbl_ComputerInventory.
To clean the data I've created Tbl_ComputerInventory with:
CONSTRAINT [Pkey_Tbl_ComputerInventory] PRIMARY KEY CLUSTERED
(
[ComputerName] ASC,
[SerialNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]?Now I want to copy the non duplicate rows into Tbl_ComputerInventory using a Query such as:INSERT INTO Tbl_ComputerInventory (ComputerName, SerialNumber)
SELECT ImpTbl_ComputerInventory.[Computer Name], ImpTbl_ComputerInventory.[Service Tag]
FROM ImpTbl_ComputerInventory
Where NOT EXISTS (Select ComputerName, SerialNumber From Tbl_ComputerInventory WHERE (Tbl_ComputerInventory.ComputerName = ImpTbl_ComputerInventory.[Computer Name] AND Tbl_ComputerInventory.SerialNumber = ImpTbl_ComputerInventory.[Service Tag]));However I'm still getting: Violation of PRIMARY KEY constraint 'Pkey_Tbl_ComputerInventory'. Cannot insert duplicate key in object 'dbo.Tbl_ComputerInventoryThanks in advance 🙂Try this:
INSERT INTO
[Tbl_ComputerInventory]
(
[ComputerName]
, [SerialNumber]
)
SELECT DISTINCT
[ImpTbl_ComputerInventory].[Computer Name]
, [ImpTbl_ComputerInventory].[Service Tag]
FROM
[ImpTbl_ComputerInventory];
Still getting duplicate error