我使用SQLite,並試圖舊行從表學生Students_Old移動,複製從Students_Import新行。刪除行不會在另一個表與現有的複合主鍵的
的問題是我有多個主鍵爲:
CREATE TABLE "Students" (
`LastName` TEXT NOT NULL,
`FirstName` TEXT NOT NULL,
`BornDate` TEXT NOT NULL,
`Class` TEXT NOT NULL,
`Photo` TEXT,
`ValidUntil` CHAR(10),
PRIMARY KEY(LastName,FirstName,BornDate))
所有的表這種結構(除了Students_Import是不可少的照片和ValidUntil)。
到目前爲止,我已經成功地將舊行與此複製:
INSERT INTO Students_Old
SELECT DISTINCT a.LastName, a.FirstName, a.BornDate, a.Class, a.Photo, a.ValidUntil FROM
Students a LEFT JOIN Students_Import b ON a.LastName =b.LastName AND a.FirstName=b.FirstName AND a.BornDate=b.BornDate WHERE b.LastName is NULL;
而與此添加新行:
INSERT INTO Students
SELECT DISTINCT a.LastName, a.FirstName, a.BornDate, a.Class, "", "" FROM
Students_Import a LEFT JOIN Students b ON a.LastName =b.LastName AND a.FirstName=b.FirstName AND a.BornDate=b.BornDate WHERE b.LastName is NULL
但我不能想出如何刪除舊學生中的行(不存在於Students_Import中)。
我已經試過這幾個變量:
DELETE FROM Students WHERE (LastName, FirstName, BornDate) IN
(SELECT DISTINCT a.LastName, a.FirstName, a.BornDate, a.Class, a.Photo, a.ValidUntil FROM
Students a LEFT JOIN Students_Import b ON a.LastName =b.LastName AND a.FirstName=b.FirstName AND a.BornDate=b.BornDate WHERE b.LastName is NULL);
但我只得到語法錯誤或者說,我不能用它在多行。
我將不勝感激任何幫助!
工程就像一個魅力! 你救了我頭疼的一天(因爲我沒有SQL編程,10年以上的時間過長)。 非常多,謝謝大家! –