首页 文章

根据另一个表中的条件,将选择的行更新为所选值

提问于
浏览
0

我想从表(Table1)中的列(Column1)更新选择的行,其值为我选择的(即不是来自另一个表的值) .

  • 行选择基于另一个表(表2)中非共享列(Column3)中的条件 .

  • Table1和另一个表(Table2)共享一列(Column2) .

  • Column1中的某些行当前包含空值 .

我创建了一个SELECT语句来提取正确的行,如下所示:

SELECT Table1.Column1, Table2.Column2
FROM Table1
RIGHT JOIN Table2 ON Table1.Column2 = Table2.Column2 
WHERE Table2.Column3 = 'Condition'

但是,由于我对SQL很新,我不确定如何将其转换为UPDATE语句,将Column1更新为我选择的值 .

会这样的吗?

UPDATE Table1
SET Table1.Column1 = 'Value'
FROM Table1
RIGHT JOIN Table2 ON Table1.Column2 = Table2.Column2
WHERE Table2.Column3 = 'Condition'

非常感谢 .

2 回答

  • 1

    简单的内部联接更新查询应该工作 . 我不明白你为什么要使用 RIGHT JOIN

    UPDATE T1
    SET T1.Column1 = 'Value'
    FROM Table1 T1
    INNER JOIN Table2 T2 ON T1.Column2 = T2.Column2
    AND T2.Column3 = 'Condition'
    
  • 2

    试试这个查询:

    UPDATE Table1
    SET Column1 = t2.Column3
    FROM 
    Table1 t1 INNER JOIN Table2 t2 ON t1.Column2 = t2.Column2
    WHERE t2.Column3 = 'Condition'
    

    正如Vidmantas指出的那样, INNER JOIN 更适合你的情况,你不需要 RIGHT JOIN

相关问题