基于另一个 table 更新列

UPDATE column based on another table

我有两个表,TableA 和 TableB。公共栏是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    |

如何使用 Table B 中 "Jeans" 列的数据更新 Table A 中的 "Jeans" 列? "Jeans" 列在 Table 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;

我得到的错误是:"Error Code: 1136. Column count doesn't match value count at row 1"。

我做错了什么?

您应该使用 UPDATE 查询

UPDATE Table_A a 
JOIN Table_B b ON a.id = b.id
SET a.jeans = b.jeans;

您正在尝试插入新行,而不是更新它们,您得到的错误是因为内部查询 (1) 选择的列数与目标中的列数不同 table (3).改用更新:

update Table_A set Jeans = (select Jeans from Table_B where Table_B.id = Table_a.id)