使用select语句更新多行

我有这些表和值:

Table1
------------------------
ID | Value
------------------------
2 | asdf
4 | fdsa
5 | aaaa


Table2
------------------------
ID | Value
------------------------
2 | bbbb
4 | bbbb
5 | bbbb

我想使用Table1中的值和它们各自的ID更新Table2中的所有值。

有没有办法用一个简单的SQL查询来做到这一点?


运行一个选择,以确保它是你想要的

SELECT t1.value AS NEWVALUEFROMTABLE1,t2.value AS OLDVALUETABLE2,*
FROM Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.ID

更新

UPDATE Table2
SET Value = t1.Value
FROM Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.ID

另外,考虑使用BEGIN TRAN以便在需要时可以将其回滚,但请确保在满意时COMMIT


如果您在两个表中都有ID,则以下工作:

update table2
    set value = (select value from table1 where table1.id = table2.id)

也许更好的方法是加入:

update table2
    set value = table1.value
    from table1
    where table1.id = table2.id

请注意,此语法在SQL Server中可用,但在其他数据库中可能不同。


您可以使用别名来改进查询:

UPDATE t1
   SET t1.Value = t2.Value
  FROM table1 AS t1
         INNER JOIN 
       table2 AS t2
         ON t1.ID = t2.ID
链接地址: http://www.djcxy.com/p/16881.html

上一篇: Update multiple rows using select statement

下一篇: MySql Update A Joined Table