在行中更新具有不同值的列

时间:2019-11-29 19:11:55

标签: mysql sql postgresql sql-update

我想用ColumnXTableA的值更新ColumnY的{​​{1}}。

这两个表的共同点是属性TableB。 是否有可能,当我尝试更新代码时得到

  

子查询返回多行

子查询看起来像这样:

id

4 个答案:

答案 0 :(得分:1)

尝试:

UPDATE TableA 

    SET ColumnX = (SELECT ColumnY FROM TableB WHERE tableA.id=tableB.id);

并确保SELECT ColumnY FROM TableB WHERE tableA.id in (SELECT id FROM TableB )返回1个值

答案 1 :(得分:1)

您的where子句当前正在使用tableA.id=tableA.id,每行都适用。试试:

UPDATE TableA 
SET ColumnX = (SELECT ColumnY FROM TableB WHERE tableB.id=tableA.id);

答案 2 :(得分:0)

您可以像选择行一样使用联接,例如:

UPDATE TableA, TableB set TableA.ColumnX=TableB.ColumnY WHERE TableA.id=TableB.id

答案 3 :(得分:0)

只需更改=之后的where子句条件中的名称,因为您具有相同的表名,导致多个结果返回到TableB.id或在下面尝试

         UPDATE TableA A
         Join TableB B
         On
         A.id= B.id
        SET A.ColumnX = B.ColumnY