我有一个叫GUEST
的表,一个叫的表HOTEL_BOOKING
。
我想更新GUEST
表中的一列guest_nobookings
(这是客人在酒店的预订数量)。
我可以HOTEL_BOOKING
通过基于客人人数对酒店预订人数进行计数,从表格中获得客人的预订人数。
这是我到目前为止所拥有的:
SELECT COUNT(hotel_bookingno)
FROM hotel_booking
GROUP BY guest_no;
这给了我每个住在酒店的客人的预订数量。为了更新GUEST表,我尝试了以下方法:
UPDATE guest
SET (guest_nobookings = (SELECT COUNT(hotel_bookingno)
FROM hotel_booking
GROUP BY guest_no));
但是,当我尝试此操作时,出现“单行子查询返回多个行”错误。
有解决这个问题的更直接的方法吗?
提前致谢!
您可以使用相关子查询在此处进行更新:
UPDATE guest g
SET guest_nobookings = (SELECT COUNT(*) FROM hotel_booking hb
WHERE hb.guest_no = g.hotel_bookingno);
您可能需要稍作更改以使其起作用。作为附带说明,您可能需要重新考虑设计,甚至避免进行此更新。原因是hotel_booking
表中的状态每次更改时,计数聚合可能会变得无效,并且必须重新计算。通常,我们尝试避免在SQL中存储原始数据的集合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句