내 데이터베이스에서 데이터를 가져오려고 합니다. 다른 하위 쿼리에 대한 하위 쿼리 쿼리 - 그리고 중간 결과로 얻은 결과는 다음과 같습니다.
안건 | 수량 |
---|---|
펜 | 34 |
연필 | 42 |
공책 | 42 |
지우개 | 12 |
item_quantity
최대 값(위의 예에서 42)이 있는 행을 가져오려면 이 결과 집합에 대해 다른 쿼리를 작성해야 합니다 . 연필과 공책이 있는 행. 그러나 작업이 예상했던 것보다 약간 까다롭다는 것을 알게 되었습니다.
SELECT * FROM sub_query_result HAVING quantity = MAX(quantity)
항상 빈 결과 집합을 반환합니다.
SELECT * FROM sub_query_result HAVING quantity = 42
정확한 최대 수량을 미리 알아야하기 때문에 무의미합니다.
SELECT * FROM sub_query_result WHERE quantity = MAX(quantity)
단순히 작동하지 않습니다("그룹 기능의 유효하지 않은 사용")
작동하지만 마음에 들지 않는 솔루션을 볼 수 있습니다. 이 sql 요청을 실행하는 백엔드 코드에 대해 수행해야 하는 추가 작업으로 인해 또는 그 비효율성으로 인해:
SELECT * FROM query_result HAVING quantity = (SELECT MAX(quantity) FROM
<Query upon sub-query upon another sub-query that shall return query_result>)
하지만 그런 식으로 동일한 데이터를 두 번 요청합니다! 일반적으로 좋은 접근 방식이 아닙니다.
최대 값을 먼저 얻으려면 수량 내림차순으로 주문하십시오. 첫 번째 행, 즉 최대값이 있는 행만 선택하십시오. ANSI SQL 버전:
SELECT * FROM query_result
ORDER BY quantity DESC
FETCH FIRST 1 ROW WITH TIES
WITH TIES
최대 수량이 동일한 행이 여러 개 있는 경우 여러 행을 얻을 수 있음을 의미합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다