Sql 使用select语句更新多行
假设我有这些表和值:Sql 使用select语句更新多行,sql,oracle,Sql,Oracle,假设我有这些表和值: Table1 ------------------------ ID | Value ------------------------ 2 | asdf 4 | fdsa 5 | aaaa Table2 ------------------------ ID | Value ------------------------ 2 | bbbb 4 | bbbb 5 | bbbb 我想使用表1中的值及其各自的ID更新表2中的所有值 我知道我可以运行这个: UPD
Table1
------------------------
ID | Value
------------------------
2 | asdf
4 | fdsa
5 | aaaa
Table2
------------------------
ID | Value
------------------------
2 | bbbb
4 | bbbb
5 | bbbb
我想使用表1
中的值及其各自的ID更新表2中的所有值
我知道我可以运行这个:
UPDATE Table2
SET Value = t1.Value
FROM Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.ID
但是,如果Table1
和Table2
实际上是带条件的select语句,我该怎么办?如何修改SQL语句以考虑到这一点?这是Oracle中通常执行此类更新查询的方式。Oracle没有“更新自”
选项:
UPDATE table2 t2
SET t2.value = ( SELECT t1.value FROM table1 t1
WHERE t1.ID = t2.ID )
WHERE EXISTS ( SELECT 1 FROM table1 t1
WHERE t1.ID = t2.ID );
WHERE EXISTS
子句将确保仅更新table1
中具有相应行的行(否则将更新table2
中的每一行;table1
中没有相应行的行将更新为NULL
).使用联接将两条Select语句与Table2
关联,然后在Table2