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 以外的列中。

4

3 回答 3

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
于 2012-05-25T15:06:30.670 回答
1

已解决,SQL 语句没有任何问题。我有其他列设置为非空,但没有默认值。当语句运行时,它会尝试将空值插入这些列。通过添加默认值来修复。

于 2012-05-27T15:57:44.170 回答
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)
于 2012-05-25T15:07:42.903 回答