SQL 插入 - 添加不存在的 ID



我正在尝试清理表中的数据,以便我可以创建一对一的关系。 具有主键的表的记录数多于与其共享 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.

你可以用左连接做同样的事情:

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

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

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)

您也可以立即使用合并到(在提出此问题时不会回来)。你可以在这里阅读它。

这比自己编写插入、更新和删除语句要高效得多。仍然可以使用条件。查看此处。

最新更新