我有一个名为'Student'的表,其中包含Name
,Role
,Class
和Subject
列。
我有另一个名为'StudentClass'的表,列Name
和Class
。如果'StudentClass'表中不存在Name
及其对应的Class
,我必须在'Student'表中插入'{1}}和Name
列'StudentClass'表。如果“StudentClass”表中存在Class
,但该行的相应Name
值不同,则在“StudentClass”表中更新该行的Class
值
我不能简单地截断'StudentClass'表并从'Student'表中插入Class
和Name
,因为我已跟踪'StudentClass'表中所做的任何更改。
如果Class
及其对应的Name
不存在,那么有没有mySQL查询将{Student}表中的Class
和Name
插入'StudentClass'表中在'StudentClass'表中,如果存在Class
但其对应的Name
值不同,则更新该行。
答案 0 :(得分:0)
试试这个:
INSERT INTO StudentClass (Name, Class)
SELECT Name, Class FROM Student AS S
WHERE NOT EXISTS (SELECT * FROM StudentClass AS SC
WHERE SC.Name = S.Name AND SC.Class=S.Class);
您可以找到有关EXISTS和NOT EXISTS here的更多信息。
答案 1 :(得分:0)
您发布的查询仅用于插入新条目。我没有提供更新功能。所以我修改了你的查询,并添加了一个带有插入查询的更新查询,解决了我的问题。
INSERT INTO StudentClass (Name, Class)
SELECT Name, Class FROM Student AS S
WHERE NOT EXISTS (SELECT * FROM StudentClass AS SC
WHERE SC.Name = S.Name);
UPDATE StudentClass SC INNER JOIN Student S ON SC.Name = S.Name
SET SC.Class = S.Class WHERE SC.Class != S.Class
感谢您的帮助