使用select语句更新多行(Update multiple rows using select s

2019-06-25 20:39发布

我有这些表和值:

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


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

我想更新所有在表2使用表1中的值与它们各自的ID值。

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

Answer 1:

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

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它你满意的时候。



Answer 2:

如果你有两个表,下面的作品IDS:

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,但可能在其他的数据库不同。



Answer 3:

您可以使用别名来提高查询:

UPDATE t1
   SET t1.Value = t2.Value
  FROM table1 AS t1
         INNER JOIN 
       table2 AS t2
         ON t1.ID = t2.ID


Answer 4:

MySQL为我工作以上答案都不对,下面的查询工作,但:

UPDATE
    Table1 t1
    JOIN
    Table2 t2 ON t1.ID=t2.ID 
SET
    t1.value =t2.value
WHERE
    ...


Answer 5:

我已经使用这个一个关于MySQL,MS Access和SQL Server。 ID字段是以上至极的表一致时,不necesarily主索引的字段。

UPDATE DestTable INNER JOIN SourceTable ON DestTable.idField = SourceTable.idField SET DestTable.Field1 = SourceTable.Field1, DestTable.Field2 = SourceTable.Field2...


Answer 6:

SET SQL_SAFE_UPDATES = 0;
UPDATE m1,m2 
 SET m1.code = m2.code
WHERE
  m1.name = (select distinct m2.name from  m2 limit 1);

在这里,更新用走。安迪在m1.code,其中condtion在子查询中检索的所有记录并返回所有匹配rows.I使用限制1回一个,而不是重复。 您可以使用不同的或限制1或顶部1或具有计数<1 Sry基因,我的英语水平



文章来源: Update multiple rows using select statement