1

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以外の列に値を挿入しようとします。

4

3 に答える 3

1

解決済み。SQL ステートメントに問題はありませんでした。null 以外に設定された他の列がありましたが、デフォルト値はありませんでした。ステートメントが実行されると、それらの列に null 値を挿入しようとします。デフォルト値を追加して修正しました。

于 2012-05-27T15:57:44.170 に答える
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 に答える
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 に答える