HAVING 句は GROUP BY 句と組み合わせて使用され、次のように HAVING 句で SUM などの集計関数を使用する必要があります。
SELECT fee_id
FROM a_fees
WHERE verified = 'N'
GROUP BY fee_id
HAVING SUM(audit_fees + audit_related_fees + tax_fees + other_fees) < 5000;
this sums autid_fees
、audit_related_fees
、tax_fees
およびother_fees
同じ fee_id を持つすべての行に対して、< 5000 かどうかを確認します。
しかし、fee_id が一意の場合、合計する必要があるすべてのフィールドが同じ行にあることを意味するため、GROUP BY 句を使用する必要はなく、クエリは次のように簡略化できます。
SELECT fee_id
FROM a_fees
WHERE
verified = 'N'
AND (audit_fees + audit_related_fees + tax_fees + other_fees) < 5000;
UPDATE クエリは次のようになります。
UPDATE a_fees
SET active = 'N'
WHERE a_fees.fee_id IN (
SELECT fee_id
FROM a_fees
WHERE verified = 'N'
AND audit_fees + audit_related_fees + tax_fees + other_fees < 5000);
その通りです。MySql では、select 部分で使用しているのと同じテーブルを更新することはできず、JOINS だけを使用して更新クエリを書き直す必要があります。
しかし、fee_id が一意の場合、サブクエリを使用する必要はなく、サブクエリを使用せずに UPDATE のみを使用することをお勧めします。
UPDATE a_fees
SET active = 'N'
WHERE verified = 'N'
AND audit_fees + audit_related_fees + tax_fees + other_fees < 5000;