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;
을이 sums autid_fees
, 모든 행에 대한 audit_related_fees
, tax_fees
및 other_fees
를 가지 동일한 fee_id를 확인한 다음 <인지 확인하십시오.
fee_id가 고유하면 합계가있는 모든 필드가 같은 행에 있음을 의미하므로 GROUP BY 절 및 쿼리를 사용할 필요가 없습니다 이 간단하게 할 수있다 :
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);
그리고 당신 말이 맞아 :
는
SELECT fee_id
FROM a_fees
WHERE
verified = 'N'
AND (audit_fees + audit_related_fees + tax_fees + other_fees) < 5000;
당신의 UPDATE 질의는된다 MySQL은 당신이 선택에 사용하고있는 동일한 테이블을 업데이트 할 수 없습니다 part이며 JOINS 만 사용하여 업데이트 쿼리를 다시 작성해야합니다.
그러나 fee_id가 고유 한 경우이 하위 쿼리를 사용할 필요가 없습니다 그것은 부질없이 단지 UPDATE를 사용하는 것이 좋습니다 :
UPDATE a_fees
SET active = 'N'
WHERE verified = 'N'
AND audit_fees + audit_related_fees + tax_fees + other_fees < 5000;
감사합니다 :)하지만 a_fees.fee_id가 고유 한 경우 나 또한 그 생각했다 , 하위 쿼리를 사용할 필요가 없으며 UPDATE 쿼리를 마지막 코드 조각처럼 단순화 할 수 있습니다 – fthiella
고마워요! 너 락이야. 나는 괄호가 조금 일관성이 없을지도 모른다라고 생각한다. 그러나 이것 모두는 큰 의미를 가진다. 고맙습니다! stackoverflow를 사용하면 얼마나 훌륭한 경험이 될까요! – Ben
방금 성명을 실행했습니다. 매력처럼 일했습니다. :) – Ben