MySQL WHERE 절에서 SUM()으로 쿼리
MySQL 테이블 작업 시 집계 계산을 기반으로 행을 검색해야 할 수도 있습니다. , 예를 들어 이전 값의 합계입니다. 그러나 WHERE 절에서 직접 SUM()을 사용하면 예상한 결과가 나오지 않을 수 있습니다.
"id" 및 "cash" 열이 있는 테이블이 있다고 가정합니다.
id | cash 1 200 2 301 3 101 4 700
검색하려면 WHERE SUM(cash) > 500은 예상대로 작동하지 않습니다.
HAVING 절을 사용한 솔루션
MySQL에서는 WHERE 절이 아닌 HAVING 절에서 집계 비교를 허용합니다. 원하는 결과를 얻으려면 다음 쿼리를 사용할 수 있습니다.
GROUP BY ... HAVING SUM(cash) > 500
그러나 이를 위해서는 GROUP BY 절을 정의해야 하며 이는 필요하지 않을 수도 있습니다.
중첩 사용 누적 합계가 포함된 하위 쿼리
다른 접근 방식은 중첩된 하위 쿼리를 사용하여 누적 합계를 계산한 다음 이를 WHERE 절에 지정된 값과 비교하는 것입니다.
SELECT y.id, y.cash FROM (SELECT t.id, t.cash, (SELECT SUM(x.cash) FROM table x WHERE x.id <= t.id) AS running_total FROM table t ORDER BY t.id) y WHERE y.running_total > 500 ORDER BY y.id LIMIT 1
In 이 쿼리에서는 테이블의 각 행에 대한 누계를 계산하는 데 하위 쿼리가 사용됩니다. 별칭 running_total은 WHERE 절에서 이 값을 참조하는 데 사용됩니다. 조건에 맞는 첫 번째 행만 반환하기 위해 LIMIT 절을 추가했습니다.
이 접근 방식을 사용하면 WHERE 절의 집계 값을 직접 비교할 수 있으며 GROUP BY 절이 필요 없이 원하는 결과를 얻을 수 있습니다.
위 내용은 MySQL에서 이전 값의 합계가 임계값을 초과하는 행을 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!