gpt4 book ai didi

MySQL根据同表中其他列的总和更新语句

转载 作者:行者123 更新时间:2023-11-29 03:07:30 25 4
gpt4 key购买 nike

我不愿意输入我在下面想出的这段代码:

UPDATE a_fees
SET active = 'N'
WHERE EXISTS
(
SELECT fee_id, (
audit_fees + audit_related_fees + tax_fees + other_fees
) AS total_fees
FROM a_fees
WHERE verified = 'N'
GROUP BY fee_id
HAVING total_fees < 5000);

因为 我运行了这段类似的代码(如下),我得到了返回表中的所有结果,这让我认为上面的这段代码将更新表中的所有记录。当我进行子选择时,它只返回我关心的部分。但是,当我添加最外层的选择语句时,它会返回整个表。

SELECT fee_id
FROM a_fees
WHERE EXISTS (

SELECT fee_id, (
audit_fees + audit_related_fees + tax_fees + other_fees
) AS total_fees
FROM a_fees
WHERE verified = 'N'
GROUP BY fee_id
HAVING total_fees <5000;

关于如何为表中四列总和小于 $5,000 的记录设置 active='N' 的任何建议都很棒。提前致谢。

最佳答案

如果子查询至少返回一行,则认为满足 EXISTS 条件。所以你是对的,第一个 UPDATE 可以更新表的所有记录。

您应该使用 IN 子句而不是 EXISTS,并且也不需要使用 GROUP BY 子句,因为 fee_id 是唯一的:

SELECT fee_id
FROM a_fees
WHERE a_fees.fee_id IN (
SELECT fee_id
WHERE
verified='N' AND
audit_fees + audit_related_fees + tax_fees + other_fees <5000);

或者您应该将条件放在子查询中:

SELECT fee_id
FROM a_fees
WHERE EXISTS (
SELECT fee_id
FROM a_fees a_fees_1
WHERE
verified = 'N'
AND a_fees_1.fee_id = a_fees.fee_id
AND audit_fees + audit_related_fees + tax_fees + other_fees <5000);

关于MySQL根据同表中其他列的总和更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155241/

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