집 >데이터 베이스 >MySQL 튜토리얼 >모든 열을 유지하면서 특정 열에서 고유한 값을 선택하는 방법은 무엇입니까?
모든 열을 유지하면서 고유한 열 값 검색
문제는 출력의 모든 열을 유지하면서 특정 열(예: field1
, field2
)에서 고유한 값을 선택하는 것입니다. 단순히 SELECT DISTINCT field1, * FROM table
을 사용하는 것은 모호함 때문에 유효하지 않습니다.
효과적인 솔루션:
1. GROUP BY
접근 방식:
GROUP BY
절은 다음과 같은 해결책을 제공합니다.
<code class="language-sql">SELECT * FROM table GROUP BY field1;</code>
동일한 field1
값을 기준으로 행을 그룹화하여 고유한 field1
값만 생성합니다. 그러나 이 방법은 SELECT
문과 GROUP BY
절
2. DISTINCT ON
활용(데이터베이스별):
일부 데이터베이스 시스템(모두는 아님)은 DISTINCT ON
을 지원하여 모든 열을 유지하면서 지정된 열에 대한 고유한 선택을 허용합니다.
<code class="language-sql">SELECT DISTINCT ON (field1) * FROM table;</code>
DISTINCT ON
의 정확한 동작은 데이터베이스 플랫폼에 따라 다를 수 있다는 점에 유의하세요.
3. 창 기능 활용(PostgreSQL, Oracle, T-SQL 등):
창 기능을 지원하는 데이터베이스(예: PostgreSQL, Oracle, T-SQL)는 강력한 솔루션을 제공합니다.
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2) AS row_number FROM table ) AS rows WHERE row_number = 1;</code>
이 접근 방식은 field1
순서로 각 파티션(field2
으로 정의) 내에 행 번호를 할당합니다. 최종 결과에는 row_number = 1
이 있는 행만 포함되어 모든 열을 유지하면서 고유한 field1
값을 효과적으로 선택합니다.
4. 하위 쿼리 및 자체 조인(MySQL, SQLite 등):
창 기능이 없는 데이터베이스(예: MySQL, SQLite)의 경우 하위 쿼리와 자체 조인의 조합이 실행 가능한 대안입니다.
<code class="language-sql">SELECT t.* FROM table t WHERE (field1, field2, ...) IN ( SELECT DISTINCT (field1, field2, ...) FROM table );</code>
field1
, field2
등의 조합이 테이블 내에서 고유한 행을 선택합니다. 특정 요구 사항에 맞게 IN
절 내의 열 목록을 조정하는 것을 잊지 마세요.
위 내용은 모든 열을 유지하면서 특정 열에서 고유한 값을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!