> 데이터 베이스 > MySQL 튜토리얼 > 모든 열을 유지하면서 특정 열에서 고유한 값을 선택하는 방법은 무엇입니까?

모든 열을 유지하면서 특정 열에서 고유한 값을 선택하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-18 20:52:12
원래의
503명이 탐색했습니다.

How to Select Distinct Values from Specific Columns While Keeping All Columns?

모든 열을 유지하면서 고유한 열 값 검색

문제는 출력의 모든 열을 유지하면서 특정 열(예: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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