使用另一个表中的数据更新一个表中的多个空白字段

时间:2011-04-12 18:16:32

标签: mysql

我试图在一个表中找到所有空的字段,并用另一个表中的数据填充它们。这就是我所拥有的:

UPDATE t1 SET col1 = (
   SELECT col99
     FROM t2
    WHERE t1.product_ID = t2.product_ID
) WHERE col1 IS NULL

完美地用于更新t1的col1中的所有空白字段。但我还需要检查其他字段中的空白并更新它们。我不希望查询在每次任何一个字段为空时更新所有字段,只是空白字段。我可以运行多个查询,但我必须想象有一个更清洁,更好的方法。

谢谢,

马修

1 个答案:

答案 0 :(得分:1)

尝试:

UPDATE t1
SET
  col1 = COALESCE(col1, (SELECT col99 FROM t2 WHERE t1.product_ID = t2.product_ID)),
  col2 = COALESCE(col2, (SELECT ...)),
  -- etc.

不应该比初始解决方案表现更好。它只用一个UPDATE查询而不是几个查询来完成工作。