> 데이터 베이스 > MySQL 튜토리얼 > 테이블의 여러 열에서 최소값을 효율적으로 찾는 방법은 무엇입니까?

테이블의 여러 열에서 최소값을 효율적으로 찾는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-10 06:07:40
원래의
602명이 탐색했습니다.

How to Efficiently Find the Minimum Value Across Multiple Columns in a Table?

여러 열에서 효율적으로 최소값 선택

여러 열이 있는 테이블에서는 각 행에 대해 해당 열의 최소값을 검색해야 하는 경우가 많습니다. 이는 다양한 방법으로 달성될 수 있습니다.

CASE/WHEN 방식

처리할 열의 수가 적은 경우 CASE/WHEN 문을 사용하는 것이 간단하고 효율적인 솔루션입니다. 각 열을 평가하고 최소값을 TheMin 열로 선택하면 원하는 결과를 얻을 수 있습니다. 예는 다음과 같습니다.

<code class="language-sql">SELECT Id,
       CASE 
           WHEN Col1 < Col2 AND Col1 < Col3 THEN Col1
           WHEN Col2 < Col1 AND Col2 < Col3 THEN Col2
           ELSE Col3
       END AS TheMin
FROM   YourTableNameHere</code>
로그인 후 복사

이 방법은 간단하고 간단하며 열 수가 제한된 상황에 적합합니다.

최소 기능

여러 열이 포함된 더 복잡한 시나리오의 경우 LEAST 함수가 편리한 솔루션을 제공합니다.

<code class="language-sql">SELECT Id,
       LEAST(Col1, Col2, Col3) AS TheMin
FROM   YourTableNameHere</code>
로그인 후 복사

LEAST 함수는 지정된 모든 열을 평가하고 그 중 최소값을 반환합니다. 이 접근 방식을 사용하면 복잡한 조건문이 필요하지 않으며 간결한 솔루션을 제공합니다.

ROW_NUMBER 함수

ROW_NUMBER 함수는 많은 수의 컬럼을 처리하거나 추가 처리가 필요할 때 사용할 수 있습니다. 가장 작은 값을 기준으로 행을 정렬하면 하위 쿼리를 사용하여 가장 높은 순위의 행을 쉽게 선택할 수 있습니다.

<code class="language-sql">SELECT Id,
       TheMin
FROM   (
            SELECT Id,
                   Col1, Col2, Col3,
                   ROW_NUMBER() OVER (PARTITION BY Id ORDER BY LEAST(Col1, Col2, Col3)) AS RowNum
            FROM   YourTableNameHere
       ) AS Subquery
WHERE  RowNum = 1</code>
로그인 후 복사

이 접근 방식은 유연성을 제공하므로 최소값을 검색하기 전에 데이터 필터링 또는 그룹화와 같은 더 복잡한 작업을 수행할 수 있습니다.

요약

여러 열 중에서 최소값을 선택하는 가장 좋은 방법은 시나리오의 특정 요구 사항에 따라 다릅니다. 열 수가 제한된 간단한 시나리오의 경우 CASE/WHEN 문이 간단한 솔루션을 제공합니다. 더 복잡한 시나리오의 경우 또는 많은 수의 열을 처리할 때 LEAST 함수 또는 ROW_NUMBER 함수는 더 뛰어난 성능과 유연성을 갖춘 고급 옵션을 제공합니다.

위 내용은 테이블의 여러 열에서 최소값을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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