여러 값으로 SQL 결과 순서 사용자 정의
많은 필드, 특히 인덱스가 없는 필드가 포함된 SQL 테이블을 사용하면 특정 레코드를 검색하고 정렬하는 작업이 복잡해질 수 있습니다. 색인화되지 않은 x_field
이 포함된 테이블이 있다고 가정해 보겠습니다. 단순히 ORDER BY
을 여러 값과 함께 사용한다고 해서 필요한 순서가 보장되는 것은 아닙니다.
예를 들어 다음 쿼리에는 결함이 있습니다.
<code class="language-sql">SELECT * FROM table WHERE id NOT IN (126) ORDER BY x_field 'f', 'p', 'i', 'a'</code>
구문이 잘못되어 의도한 결과가 나오지 않습니다. 해결책은 CASE
문을 사용하여 순서를 명시적으로 정의하는 것입니다.
<code class="language-sql">SELECT * FROM table WHERE x_field IN ('f', 'p', 'i', 'a') ORDER BY CASE x_field WHEN 'f' THEN 1 WHEN 'p' THEN 2 WHEN 'i' THEN 3 WHEN 'a' THEN 4 ELSE 5 -- Handles values outside the specified set END, id</code>
이 세련된 쿼리는 원하는 각 x_field
값에 숫자 순서 값을 할당합니다. x_field = 'f'
이 포함된 레코드가 먼저 표시되고 'p', 'i', 'a'가 그 뒤를 따릅니다. 다른 모든 x_field
값은 마지막에 id
순서로 그룹화됩니다. 이 접근 방식은 SQL에서 복잡한 주문 시나리오를 관리하기 위한 유연하고 안정적인 방법을 제공합니다.
위 내용은 미리 정의된 시퀀스의 여러 값을 기준으로 SQL 결과를 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!