gpt4 book ai didi

SQL:创建新字段,填充查询结果

转载 作者:行者123 更新时间:2023-12-04 22:21:44 24 4
gpt4 key购买 nike

我有两个表:tbl_listings,列:prop_id;
另一个表:tbl_bookings,列有:prop_id、booking_date。

我想编写一个查询来计算 prop_id 在 tbl_bookings 中出现的所有次数,然后用该查询的结果填充 tbl_listings 中的一个新列。

我的查询看起来像:

ALTER TABLE tbl_listings
ADD COLUMN prop_count INT

UPDATE tbl_listings
SET prop_count =
(SELECT COUNT(*)
FROM tbl_bookings
GROUP BY prop_id)

但由于某种原因,我收到一条错误消息:子查询返回超过 1 行。
我该如何解决?

最佳答案

该子查询为您提供了每个不同 prop_id 的计数.您只能为 prop_count 分配一个计数值.如果您打算更新 prop_count在与 prop_ids 对应的多行中,您需要将相关子查询添加到与 prop_id 相关的更新中。在 tbl_bookings与相应的 prop_idtbl_listings .

当我更多地考虑您的问题时,我想知道您是否打算插入一个空的 tbl_listings 表而不是更新。您可以使用以下命令执行此操作:

INSERT INTO tbl_listings(prop_id,prop_count)
SELECT prop_id, COUNT(*) as prop_count
FROM tbl_bookings
GROUP BY prop_id

如果您真的打算更新并假设每个 prop_id存在于您的 tbl_listings 中表,您可以发布以下更新:
UPDATE tbl_listings
SET prop_count=(SELECT COUNT(*)
FROM tbl_bookings AS TB
WHERE TB.prop_id=TL.prop_id)
FROM tbl_listings AS TL

如果要更新 tbl_listings通过从 tbl_bookings 插入新的 prop_ids以及它们各自的计数,您可以执行以下操作:
INSERT INTO tbl_listings(prop_id,prop_count)
SELECT prop_id, COUNT(*) as prop_count
FROM tbl_bookings AS TB
WHERE NOT EXISTS(SELECT prop_id -- Insert only new prop_ids/counts
FROM tbl_listings AS TL
WHERE TL.prop_id=TB.prop_id)
GROUP BY prop_id

关于SQL:创建新字段,填充查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com