代码之家  ›  专栏  ›  技术社区  ›  meme

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

  •  1
  • meme  · 技术社区  · 16 年前

    我有两张表,分别是MASTER和NEWDATA。两个表上的模式完全相同,它们包含字段名:CODE、SERIAL、MODEL、VALIDATED_DATE。

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

    谢谢!

    3 回复  |  直到 16 年前
        1
  •  1
  •   ʞɔıu    16 年前
    update master m inner join newdata n on n.code=m.code set m.validated_date = now()
    

    code 为了高效地工作,应该对列进行索引。考虑到它应该很快,比其他人建议的子查询方法快得多(除非你运行的是mysql 5.4,否则mysql的相关子查询执行基本上完全没有优化)。

        2
  •  1
  •   manji    16 年前
    UPDATE MASTER M
       Set VALIDATED_DATE = Now()
     WHERE EXISTS (SELECT NULL 
                     FROM NEWDATA AS ND 
                    WHERE ND.CODE = M.CODE)
    
        3
  •  0
  •   dnagirl    16 年前

    如果你设置了 VALIDATED_DATE current time on update ,然后对任何列进行简单更新(给定索引 CODE )应该很快。