我想知道如何在 Oracle SQL 中编写这个查询:
UPDATE address
SET phone1 = sp.phone,
is_avlbl = ( CASE
WHEN sp.name IS NULL THEN 1
ELSE 0
END )
FROM address ad
LEFT JOIN speaker sp
ON sp.addressid = ad.id
上面的查询格式来自 MS SQL Server,但我想用 Oracle 实现类似的功能。
已经看过更新和左外连接语句,这是针对 T-SQL 的。
编辑
我尝试了以下解决方案:
update
table1 t1
set
(
t1.column1,
t1.column2,
t1.column3
) = (
select
t2.column1,
t2.column2,
( CASE
WHEN t2.column2 IS NULL THEN 1
ELSE 0
END )
from
table2 t2
where
t2.column1 = t1.column1
);
但问题是,当 t2 中没有对应于 t1 的记录时,上面的 sql 将空值插入到 t1 中,因为当没有这样的记录时,我需要在其中插入一些其他值。如果这部分要求之前不清楚,我深表歉意。