mysql交叉更新表

时间:2013-08-21 08:46:19

标签: mysql

我无法弄清楚如何解决这个问题。 我有一个表(A)我需要更新,结构如下:

CODE    VALUE
1       a
2       null
3       null
etc...

然后我有另一个表(B)具有相同的结构,但每个值都设置为:

CODE    VALUE
1       a
2       b
3       c

我需要做的是将数据从表B复制到表A,其中A.CODE = B.CODE但仅在未设置A.VALUE的情况下。 这样做的最佳查询是什么?由于我处理的是2000行,所以不能手工完成。

我写了类似的东西,但它似乎不起作用:

update A set VALUE = 
    (select b.VALUEfrom B b, A a where b.CODE = a.CODE)

提前致谢!

2 个答案:

答案 0 :(得分:2)

UPDATE a SET a.Value = b.Value
FROM TableA a
INNER JOIN TableB b ON (a.CODE = b.CODE)
WHERE a.VALUE IS NULL

答案 1 :(得分:1)

检查a.VALUE是否设置为进行更新,并且只从内部子句中的B表中选择(并使用外部子句中的A值):

update A
  set VALUE = (select B.VALUE from B where B.CODE = A.CODE)
  where VALUE IS NULL;