我正在尝试清理表中的数据,以便创建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。
以外的列中答案 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)