UPDATE列基于另一个表

时间:2015-02-25 22:30:07

标签: mysql updates

我有两个表,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行的值计数不匹配。

我做错了什么?

2 个答案:

答案 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)