根据mysql 5.7中的条件插入表中

时间:2016-01-19 18:35:29

标签: mysql database

我有一个名为'Student'的表,其中包含NameRoleClassSubject列。

我有另一个名为'StudentClass'的表,列NameClass。如果'StudentClass'表中不存在Name及其对应的Class,我必须在'Student'表中插入'{1}}和Name列'StudentClass'表。如果“StudentClass”表中存在Class,但该行的相应Name值不同,则在“StudentClass”表中更新该行的Class

我不能简单地截断'StudentClass'表并从'Student'表中插入ClassName,因为我已跟踪'StudentClass'表中所做的任何更改。

如果Class及其对应的Name不存在,那么有没有mySQL查询将{Student}表中的ClassName插入'StudentClass'表中在'StudentClass'表中,如果存在Class但其对应的Name值不同,则更新该行。

2 个答案:

答案 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

感谢您的帮助