여러 열을 기반으로 고유한 행을 효율적으로 선택
데이터 테이블 작업 시 특정 조건에 따라 고유한 행만 검색해야 하는 경우가 많습니다. 이 예의 목표는 테이블에서 두 열의 고유한 조합이 있는 모든 행을 선택하는 것입니다.
원래 접근 방식은 DISTINCT
및 IN
절의 조합을 사용하여 고유한 행을 식별하는 것이었습니다.
<code class="language-sql">UPDATE sales SET status = 'ACTIVE' WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id) FROM sales HAVING count = 1)</code>
그러나 더 효율적이고 안정적인 방법은 GROUP BY
절을 사용하는 것입니다:
<code class="language-sql">SELECT DISTINCT a,b,c FROM t</code>
다음과 같습니다.
<code class="language-sql">SELECT a,b,c FROM t GROUP BY a,b,c</code>
GROUP BY
절은 지정된 열(이 경우 saleprice
및 saledate
)을 기준으로 행을 그룹화하고 중복 행을 제거합니다. 다음 쿼리는 원하는 결과를 얻습니다.
<code class="language-sql">UPDATE sales SET status='ACTIVE' WHERE id IN ( SELECT id FROM sales S INNER JOIN ( SELECT saleprice, saledate FROM sales GROUP BY saleprice, saledate HAVING COUNT(*) = 1 ) T ON S.saleprice=T.saleprice AND s.saledate=T.saledate )</code>
이 쿼리는 saleprice
및 saledate
을 기반으로 고유한 판매 행을 식별하고 상태를 "ACTIVE"로 업데이트합니다. 하위 쿼리는 GROUP BY
및 HAVING
절을 사용하여 saleprice
및 saledate
의 고유한 조합을 선택합니다.
위 내용은 SQL의 여러 열을 기반으로 고유한 행을 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!