MySQL 및 그 이상: 고유한 값을 가진 모든 열 검색
단일 열의 고유한 값과 함께 모든 열을 반환해야 하는 경우 표준 SELECT DISTINCT
문이 부족한 경우가 많습니다. 이 기사에서는 다양한 데이터베이스 시스템에서 이를 효율적으로 달성하기 위한 대체 방법을 살펴봅니다.
방법 1: 활용 GROUP BY
GROUP BY
절은 MySQL 및 기타 여러 데이터베이스에 대한 간단한 솔루션을 제공합니다. 지정된 열을 기준으로 행을 그룹화하고 각 개별 그룹에 대한 모든 열을 반환합니다.
<code class="language-sql">SELECT * FROM your_table GROUP BY field1;</code>
방법 2: DISTINCT ON
활용(PostgreSQL)
PostgreSQL은 DISTINCT ON
절을 제공하여 첫 번째 일치 행에 대한 모든 열을 유지하면서 지정된 열에서 고유한 값을 선택하는 보다 간결한 방법을 제공합니다.
<code class="language-sql">SELECT DISTINCT ON (field1) * FROM your_table;</code>
방법 3: 하위 쿼리 및 ROW_NUMBER()
(MySQL, SQLite)
DISTINCT ON
에 대한 직접적인 지원이 부족한 데이터베이스의 경우 하위 쿼리와 ROW_NUMBER()
의 조합이 유연한 솔루션을 제공합니다. 이 접근 방식은 각 개별 그룹 내에서 고유한 순위를 할당하고 각 그룹의 첫 번째 행만 검색하도록 필터링합니다.
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2) AS rn -- field2 is an arbitrary column for ordering within each group FROM your_table ) AS ranked_rows WHERE rn = 1;</code>
방법 4: 창 함수(PostgreSQL, Oracle, SQL Server)
PostgreSQL, Oracle, SQL Server와 같은 데이터베이스는 창 기능을 제공하여 하위 쿼리에 대한 더 우아하고 효율적인 대안을 제공합니다.
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2) AS rn FROM your_table ) AS rows WHERE rn = 1;</code>
중요 고려 사항:
이러한 방법은 특히 대규모 데이터세트의 경우 성능에 영향을 미칠 수 있다는 점을 기억하세요. GROUP BY
은 효율적일 수 있지만 열 선택을 신중하게 고려해야 할 수도 있습니다. ROW_NUMBER()
접근 방식은 계산 오버헤드를 추가합니다. 성능을 최적화하려면 특정 데이터베이스 시스템 및 데이터 볼륨에 가장 적합한 방법을 선택하십시오. 선택은 데이터베이스 시스템, 데이터 볼륨, 성능 요구 사항 등의 요소에 따라 달라집니다.
위 내용은 MySQL 및 기타 데이터베이스에서 고유한 값을 가진 모든 열을 효율적으로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!