我需要用与其他表的联接来更新表列我的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
,但这仍然是你原来的伪代码。