将列从一个表更新到另一个mysql

时间:2014-11-13 21:40:22

标签: mysql sql-update

我正在尝试将列从一个表复制到另一个表。

一个表只包含upc列,我想将这些upc复制到另一个upc列等于NULL的表

table A 
upc
1011
2022
3034
4033
5044

table B
id   name    upc
1    stuff   NULL
2    stuff2  NULL
3    stuff3  2344
4    stuff4  3444

基本上最终结果应该是

table B
id   name    upc
1    stuff   1011
2    stuff2  2022
3    stuff3  2344
4    stuff4  3444

这是我尝试过的。但是,所有列都更新为NULL。绝对不是预期的效果。

UPDATE t1
RIGHT JOIN
upcs t2
ON      t1.upc = t2.upc
SET     t1.upc = t2.upc
WHERE   t1.upc IS NULL

如果有人帮我一把,我将不胜感激。感谢

2 个答案:

答案 0 :(得分:0)

试试这个:

UPDATE tableB 
SET upc = a.upc 
FROM (SELECT upc FROM tableA) a WHERE tableB.id = tableA.id

答案 1 :(得分:0)

如果没有外键可以连接两个表,并且您希望按照它们列出的确切顺序加入行,那么在数据库中

试一试。

SET @id=0;

UPDATE table_b AS b
INNER JOIN (
    SELECT @id:=@id+1 AS id, upc
    FROM table_a
) AS a ON a.id = b.id
SET b.upc = a.upc 
WHERE b.upc IS NULL;

此代码的作用是对表B中的行进行编号1, 2, 3, .......n然后使用行号将table_a连接到table_b。