我有两个表,TableA和TableB。 Common列是ID。
Table_A Table_B
ID | Tshirt | Jeans | ID | Jeans |
------------------------- ----------------
1 | small | (empty) | 1 | medium |
2 | medium | (empty) | 2 | small |
3 | large | (empty) | 3 | medium |
如何更新专栏" Jeans"表A中的数据来自专栏"牛仔裤"从表B?专栏"牛仔裤"已存在表A中的空值。
结果应该是:
Table_A
ID | Tshirt | Jeans |
-------------------------
1 | small | medium |
2 | medium | small |
3 | large | medium |
我用过:
INSERT INTO Table_A SELECT Table_A.Jeans
FROM Table_A JOIN TableB ON Table_A.id = Table_B.id;
我得到的错误是:"错误代码:1136。列数与第1行和第34行的值计数不匹配。
我做错了什么?
答案 0 :(得分:1)
您应该使用UPDATE查询
UPDATE Table_A a
JOIN Table_B b ON a.id = b.id
SET a.jeans = b.jeans;
答案 1 :(得分:1)
您正在尝试插入新行,而不是更新它们,并且您得到的错误是因为内部查询(1)选择的列数与目标表(3)中的colukmn数不同。请改为使用更新:
update Table_A set Jeans = (select Jeans from Table_B where Table_B.id = Table_a.id)