【发布时间】:2013-08-27 09:38:24
【问题描述】:
我想知道如何在 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 实现类似的功能。
已经看到Update and left outer join statements,这是针对 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 中,因为当没有这样的记录时,我需要在其中插入一些其他值。如果这部分要求之前没有明确,我深表歉意。
【问题讨论】:
-
我已经检查了那个问题,但问题是我无法在这里使用该策略...将很快编辑问题
标签: sql database oracle join sql-update