SQL插入INTO - 添加不存在的ID

时间:2012-05-25 15:02:40

标签: sql where exists

我正在尝试清理表中的数据,以便创建1对1的关系。具有主键的表具有比与它共享1对1关系的表更多的记录。为了解决这个问题,我试图将表2中缺少的ID插入到表2中。

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。

以外的列中

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

已解决,SQL语句没有错。我有其他列设置为非null,但没有默认值。当语句运行时,它会尝试在这些列中插入空值。通过添加默认值进行修复。

答案 2 :(得分: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)