> 데이터 베이스 > MySQL 튜토리얼 > SQL의 여러 열을 기반으로 고유한 행을 효율적으로 선택하는 방법은 무엇입니까?

SQL의 여러 열을 기반으로 고유한 행을 효율적으로 선택하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-23 05:56:12
원래의
438명이 탐색했습니다.

How to Efficiently Select Distinct Rows Based on Multiple Columns in SQL?

여러 열을 기반으로 고유한 행을 효율적으로 선택

데이터 테이블 작업 시 특정 조건에 따라 고유한 행만 검색해야 하는 경우가 많습니다. 이 예의 목표는 테이블에서 두 열의 고유한 조합이 있는 모든 행을 선택하는 것입니다.

원래 접근 방식은 DISTINCTIN 절의 조합을 사용하여 고유한 행을 식별하는 것이었습니다.

<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 절은 지정된 열(이 경우 salepricesaledate)을 기준으로 행을 그룹화하고 중복 행을 제거합니다. 다음 쿼리는 원하는 결과를 얻습니다.

<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>
로그인 후 복사

이 쿼리는 salepricesaledate을 기반으로 고유한 판매 행을 식별하고 상태를 "ACTIVE"로 업데이트합니다. 하위 쿼리는 GROUP BYHAVING 절을 사용하여 salepricesaledate의 고유한 조합을 선택합니다.

위 내용은 SQL의 여러 열을 기반으로 고유한 행을 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿