MySQL:代码比较2个表,然后如果行是相同的更新主日期

时间:2009-10-19 19:04:45

标签: sql mysql

我有两个表,它们被称为MASTER和NEWDATA。两个表上的模式完全相同,它们包含字段名称:CODE,SERIAL,MODEL,VALIDATED_DATE。

我想检查NEWDATA表和MASTER表中CODE字段中的值是否存在。如果它们在两个表中,那么我想在MASTER表中将VALIDATED_DATE更新为now()。

我有很多记录,所以我很好奇最快的方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

UPDATE MASTER M
   Set VALIDATED_DATE = Now()
 WHERE EXISTS (SELECT NULL 
                 FROM NEWDATA AS ND 
                WHERE ND.CODE = M.CODE)

答案 1 :(得分:1)

update master m inner join newdata n on n.code=m.code set m.validated_date = now()

应对code列编制索引,以使其有效运行。鉴于它应该快,比其他人建议的子查询方法快得多(除非你运行mysql 5.4,mysql的相关子查询执行基本上完全没有优化)。

答案 2 :(得分:0)

如果您将VALIDATED_DATE设置为将自身重置为current time on update,那么任何列的简单更新(给定CODE上的索引)应该非常快。