SQL:根据另一个表的计数结果更新一个表中的列

大瑞克

我有一个叫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));

但是,当我尝试此操作时,出现“单行子查询返回多个行”错误。

有解决这个问题的更直接的方法吗?

提前致谢!

蒂姆·比格莱森(Tim Biegeleisen)

您可以使用相关子查询在此处进行更新:

UPDATE guest g
SET guest_nobookings = (SELECT COUNT(*) FROM hotel_booking hb
                        WHERE hb.guest_no = g.hotel_bookingno);

您可能需要稍作更改以使其起作用。作为附带说明,您可能需要重新考虑设计,甚至避免进行此更新。原因是hotel_booking表中的状态每次更改时,计数聚合可能会变得无效,并且必须重新计算。通常,我们尝试避免在SQL中存储原始数据的集合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果记录不在另一个表中,则SQL更新一个表

根据另一个表的计数更新表

根据范围中的日期更新另一个工作表中的列中的值

根据列在另一个表中的列更新表

根据另一个表中另一列的内容更新表列

根据另一个表中的值更新一个表中的变量列

SQL根据某种条件从另一个表中插入/更新到一个表中

循环遍历临时表中的SQL QUERY记录结果,并根据SQL QUERY结果更新另一个表

SQL-根据另一个表中的信息在一个表中搜索并返回多个结果

SQL中另一个表的更新表给出了意外结果

使用MySQL根据另一个表中的列数更新列中的值

在MySQL中计数两个表,并根据另一个表中的日期显示结果

Oracle SQL查询表并根据结果从另一个表中删除

mysql更新另一个表中的列

根据另一个表中的列更新表中的列

从SQL中的另一个表计数事件

根据另一个表中列的结果在查询中更改日期

根据mysql中另一个表中的值更新一个表中的列

SQL根据另一个表中的搜索结果在表中查找行

根据另一个表中的值更新表中的列

根据另一个表中的条件更新一个表中的列

根据另一个表的结果导入mysql

根据条件更新列并为每次更新在另一个表中创建一个新行

根据另一个表中的值更新一个表中的字段

SQL根据另一个不直接相关的表更新列

使用另一个表中的值更新一个表上的列

另一个表中的 SQL 计数列

SQL UPDATE - 如何使用另一个表更新一个表中的列?

SQL根据另一个表的主键更新整个列