Oracle SQL中update语句中的标识符无效
我有两个表格:Oracle SQL中update语句中的标识符无效,sql,oracle,Sql,Oracle,我有两个表格: hotel (**hotelNo**, hotelName, city) room (**roomNo**, type, price, hotelNo) 在表hotel中,hotelNo是主键。在room表中,roomNo是主键,hotelNo是外键 现在我想把海德公园酒店所有房间的价格提高5%。我的声明如下: UPDATE room SET price = price * 1.05 WHERE room.hotelNo = hotel.hotelNo AND hotel.h
hotel (**hotelNo**, hotelName, city)
room (**roomNo**, type, price, hotelNo)
在表hotel
中,hotelNo
是主键。在room
表中,roomNo
是主键,hotelNo
是外键
现在我想把海德公园酒店所有房间的价格提高5%。我的声明如下:
UPDATE room SET price = price * 1.05
WHERE room.hotelNo = hotel.hotelNo AND hotel.hotelName = 'Hyde Park';
oracle给我一个错误,说hotel.hotelName
是无效的标识符。
这就是为什么?我该如何完成我的任务呢?问题是,你不能在任何地方选择桌子
UPDATE room ,hotel SET price = price * 1.05
WHERE room.hotelNo = hotel.hotelNo AND hotel.hotelName = 'Hyde Park';
UPDATE ROOM SET PRICE = PRICE * 1.05
WHERE
HOTELNO = (
SELECT HOTELNO
FROM HOTEL
WHERE
HOTELNAME = 'Hyde Park'
)
将酒店添加到您的自clause@user3368506:更新了小提琴。请检查和投票,如果它的工作。
UPDATE ROOM SET PRICE = PRICE * 1.05
WHERE
HOTELNO = (
SELECT HOTELNO
FROM HOTEL
WHERE
HOTELNAME = 'Hyde Park'
)
UPDATE
(
SELECT R.PRICE
FROM ROOM R INNER JOIN HOTEL H
ON R.HOTELNO = H.HOTELNO
AND H.HOTELNAME = 'Hyde Park'
)
SET R.PRICE = R.PRICE * 1.05;