我有这些表和值:
Table1
------------------------
ID | Value
------------------------
2 | asdf
4 | fdsa
5 | aaaa
Table2
------------------------
ID | Value
------------------------
2 | bbbb
4 | bbbb
5 | bbbb
我想更新所有在表2使用表1中的值与它们各自的ID值。
有没有办法做到这一点用一个简单的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
它你满意的时候。
如果你有两个表,下面的作品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,但可能在其他的数据库不同。
您可以使用别名来提高查询:
UPDATE t1
SET t1.Value = t2.Value
FROM table1 AS t1
INNER JOIN
table2 AS t2
ON t1.ID = t2.ID
在MySQL为我工作以上答案都不对,下面的查询工作,但:
UPDATE
Table1 t1
JOIN
Table2 t2 ON t1.ID=t2.ID
SET
t1.value =t2.value
WHERE
...
我已经使用这个一个关于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...
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基因,我的英语水平