通过使用Oracle连接两个表来更新列



我需要用与其他表的联接来更新表列我的SQL伪代码如下:

update table1 T1 set T1.user = T2.product where T2.product like '%P12%' 
and T1.order = T2.order;

我也尝试过使用JOIN查询,但它给出了错误";SQL命令未正确结束";使用Oracle。

在oracle中,不允许使用JOIN进行更新。

您可以使用MERGE。它可以使用另一个表更新一个表。

MERGE INTO T1
USING (SELECT T2.PRODUCT,
T2.ORDER
FROM T2 WHERE T2.PRODUCT LIKE '%P12%') T2 
ON ( T1.ORDER = T2.ORDER )
WHEN MATCHED THEN UPDATE
SET T1.USER = T2.PRODUCT

在Oracle中,您可以使用相关的子查询:

update table1 t1
set t1.user = (select t2.product from table2 t2 where t1.order = t2.order and t2.product like '%P12%' )
where exists(select 1 from table2 t2 where t1.order = t2.order and t2.product like '%P12%')

我觉得很奇怪,有人会从product更新user,但这仍然是你原来的伪代码。

最新更新