INSERT到表中,条件在MySQL中不起作用

时间:2014-04-20 19:19:28

标签: mysql

我有一张包含数据的表,学生记录。我已经在使用带有一些附加数据的表,但记录就像是总数的一半。现在我已经获得了完整的记录,我想将它添加到我现有的表中。我希望INSERT排除我表中已存在的记录以避免重复,但新表的整个记录​​将插入到我自己的表中,从而创建重复项。

INSERT INTO `studentTable`(`studentID`, `surname`, `first_name`, `middle_name`, 
`department`, `room_number`) 
   SELECT `studentID`, `surname`, `first_name`, `middle_name`, `department`,
   `room_number` 
       FROM newTable WHERE EXISTS 
    (SELECT * FROM studentTable WHERE studentTable.studentID <> newTable.studentID);

注意:我可以轻松删除旧记录并插入新记录,但由于现有记录已经使用了一些添加的数据,因此会很痛苦。

任何帮助将不胜感激。深。

1 个答案:

答案 0 :(得分:1)

假设studentID上有一个主键(如果没有,创建一个),只需执行INSERT IGNORE,mysql将为您进行过滤。

INSERT IGNORE INTO `studentTable`
    (`studentID`, `surname`, `first_name`, `middle_name`, `department`, `room_number`)
SELECT
    `studentID`, `surname`, `first_name`, `middle_name`, `department`, `room_number` 
FROM `newTable`;