在 select 语句中使用连接的 Oracle 更新
Posted
技术标签:
【中文标题】在 select 语句中使用连接的 Oracle 更新【英文标题】:Oracle Update using a join in the select statement 【发布时间】:2013-12-03 23:38:09 【问题描述】:我正在尝试根据联接表中的数据更新字段。我读过 Update 命令不适用于 where 子句中的表连接。但是,我不能使用 Exists 命令解决方法,因为我的条件不是存在链接记录,而是链接记录中的值。
update stock S
set stm_auto_key=186086
From
STOCK Left Join
STOCK_RESERVATIONS On STOCK.STR_AUTO_KEY = STOCK_RESERVATIONS.STR_AUTO_KEY
Where
S.QTY_OH > 0 And
S.STM_LOT = 128729 And
STOCK_RESERVATIONS.IND_AUTO_KEY Is Null
select 语句可以单独工作。但是在更新命令中使用它会产生“SQL 命令未正确结束”。
提前谢谢...
【问题讨论】:
您在FROM
子句中有JOIN
。
你到底想用你的 sql 做什么?您能否发布更多有关您的表格结构和理想结果的信息。
尝试更新库存 s set stm_auto_key=186086 where S.QTY_OH > 0 And S.STM_LOT = 128729 And s.STR_AUTO_KEY in (select STR_AUTO_KEY from STOCK_RESERVATIONS sr where sr.IND_AUTO_KEY Is Null);
【参考方案1】:
我猜,你需要这样的东西,因为 UPDATE 语句中可能没有 FROM 子句:
update stock S
set stm_auto_key=186086
Where
S.QTY_OH > 0 And
S.STM_LOT = 128729 And
(SELECT STOCK_RESERVATIONS.IND_AUTO_KEY FROM STOCK_RESERVATIONS
WHERE S.STR_AUTO_KEY = STOCK_RESERVATIONS.STR_AUTO_KEY) Is Null
【讨论】:
完美!有时最好的解决方案是最简单的。非常感谢。以上是关于在 select 语句中使用连接的 Oracle 更新的主要内容,如果未能解决你的问题,请参考以下文章