SQL:在更新
问题描述:
我不能发现我的请求,问题误差内加盟。这里是我的要求和2台:SQL:在更新
UPDATE RESERVATION inner join client on reservation.numcl = client.numcl
SET reservation.numcl2 = client.numcl2;
错误:
=> [42000][971] ORA-00971: missing SET keyword
表客户 Client table
预订客户 reservation table
解决办法:
UPDATE RESERVATION SET reservation.numcl2 = (select client.NUMCL2
from CLIENT
where client.NUMCL= RESERVATION.numcl);
答
Oracle不支持在update
join
(至少明确地)。你想要做什么的等效是:
UPDATE RESERVATION r
SET numcl2 = (select client.NUMCL2
from CLIENT c
where c.NUMCL = r.numcl
)
WHERE EXISTS (SELECT 1 FROM client c WHERE c.NUMCL = r.numcl);
的exists
是很重要的,如果你想处理在没有比赛的案件。
+0
好吧,我明白了!但在我的情况下,他们不能在预留数量不在客户端,所以我不需要把它放在正确的?在存在选择之后,'1'的用法是什么? – Rotciv
+0
@Rotciv。 。 。如果你不需要检查比赛,那么你不需要。我只是指出Oracle中等效的语法。 “选择”后面的内容并不重要; “1”很容易打字。 –
你是在第一行之后突出显示第一行还是错过了';'? – Hans
我并没有真正明白你的意思,突出显示了第一行,但内部连接在选择实例中工作得很好。而且;应该在最后的权利? – Rotciv
我认为它不允许你“更新”一个连接。它正在寻找表名后面的'SET'关键字,当它执行一个简单的'UPDATE'时,它通常会出现...... –