gpt4 book ai didi

mysql - 根据另一个表中的列的总和在一个表中设置两个值

转载 作者:行者123 更新时间:2023-11-29 23:28:25 24 4
gpt4 key购买 nike

我有两个表,一个包含数十万行的“数据”表,一个包含数百行的“设置”表。我需要更新设置表中的两个值,基于数据表中一列的总和大于设置表中另一列的总和,其中设置表的“id”与数据表的“offerid”匹配.

我一直在 Google 上寻找许多可能的解决方案,但我似乎无法将其中任何一个解决方案满足我的需求。每当我开始使用连接时,我都不可避免地会被绊倒。

我最近的尝试没有成功,是:

UPDATE settings a, data b
SET a.hidden=1, a.weight=0
WHERE a.id = b.offerid
AND sum(b.views) > a.target

我喜欢这种方法,因为我认为它对我来说确实有意义,但我得到的只是“错误代码1111:我们的组函数无效”。也许这里有人可以指出我正确的方向。

最佳答案

它会出错,因为您使用的是没有分组的聚合函数(sum)。所以查询确实不知道哪些行应该被求和在一起。您可以使用这样的子查询:

UPDATE settings a
INNER JOIN
(
SELECT
sum(b.views) sumviews, b.offerid
from data b
group by b.offerid
) c on c.offerid = a.id
SET a.hidden=1, a.weight=0
where c.sumviews>a.target

编辑:要禁用安全更新功能,请执行以下步骤

Follow the steps below before executing the UPDATE command:

Go to Edit --> Preferences
Click "SQL Queries" tab and uncheck "Safe Updates" check box
Query --> Reconnect to Server
Now execute your sql query

来源:Disable Safe Update

关于mysql - 根据另一个表中的列的总和在一个表中设置两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769761/

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