2012-05-25 2 views
1

Я пытаюсь очистить данные в таблице, чтобы я мог создать отношения 1 к 1. Таблица с первичным ключом имеет больше записей, чем таблица, с которой она имеет отношение 1 к 1. Чтобы решить эту проблему, я пытаюсь вставить недостающие идентификаторы из таблицы 2 в таблицу 2.SQL Insert INTO - добавление не существующих идентификаторов

INSERT INTO medical_Surveillance(dbo.Medical_surveillance.EmpID) 
SELECT dbo.EmployeeInformation.EmpID 
FROM EmployeeInformation 
WHERE not exists (select dbo.medical_Surveillance.EmpID from medical_Surveillance 
WHERE dbo.medical_Surveillance.EmpID = dbo.EmployeeInformation.EmpID) 

Что с этим SQL заявлением? При запуске он пытается вставить значения в столбцы, отличные от dbo.Medical_surveillance.EmpID.

+0

Решено, ничего не случилось с оператором SQL. У меня были другие столбцы, которые были установлены как null, но не имели значений по умолчанию. Когда оператор запустится, он попытается вставить нулевые значения в эти столбцы. Исправлено добавлением значений по умолчанию. – talbright

ответ

1

Вы можете сделать то же самое с левой присоединиться:

INSERT INTO medical_Surveillance(EmpID) 
SELECT EmployeeInformation.EmpID 
FROM EmployeeInformation 
    LEFT JOIN medical_surveillance ON EmployeeInformation.EmpID = medical_surveillance.EmpID 
WHERE medical_surveillance.EmpID IS NULL 
0
INSERT INTO medical_Surveillance(EmpID) 
SELECT ei.EmpID 
FROM EmployeeInformation as ei 
WHERE ei.EmpID not in (select ms.EmpID from medical_Surveillance as ms) 
1

Решено, не было ничего плохого в заявлении SQL. У меня были другие столбцы, которые были установлены как null, но не имели значений по умолчанию. Когда оператор запустится, он попытается вставить нулевые значения в эти столбцы. Исправлено добавлением значений по умолчанию.