IN() 및 FIELD()를 사용하여 사용자 정의 시퀀스로 MySQL 쿼리 결과를 정렬하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-11-22 05:32:17
원래의
568명이 탐색했습니다.

How Can I Order MySQL Query Results by a Custom Sequence Using IN() and FIELD()?

IN()을 사용한 사용자 정의 정렬을 위해 FIELD()를 사용한 MySQL 쿼리 최적화

MySQL 데이터베이스에서 데이터를 검색할 때 결과를 특정 순서로 정렬해야 하는 경우가 많습니다. 순서. IN() 메서드를 사용하면 미리 정의된 값 목록을 기반으로 레코드를 검색할 수 있지만 결과 집합 내에서 IN() 절에 있는 값의 순서를 유지하려는 경우 문제가 발생합니다.

문제:

정렬된 ID 번호가 포함된 PHP 배열이 있고 IN() 메서드를 사용하여 MySQL 테이블에서 해당 레코드를 가져오려고 한다고 가정해 보겠습니다. 하지만 이러한 레코드는 IN() 절에 지정된 것과 동일한 순서로 반환되어야 합니다.

해결책:

이를 해결할 수 있는 강력한 함수 챌린지는 FIELD()입니다. 주로 문자열 함수로 알려져 있지만 숫자 데이터에도 효과적으로 작동합니다. FIELD()를 사용하면 IN() 절에서 원하는 값 순서를 지정할 수 있으며 MySQL은 이에 따라 결과를 정렬합니다.

예:

ID 번호가 정렬된 다음 PHP 배열을 고려해 보겠습니다.

$ids = [4, 7, 3, 8, 9];
로그인 후 복사

기사라는 테이블에서 해당 레코드를 검색하는 동시에 ID 순서에 따라 다음 MySQL 쿼리를 사용할 수 있습니다.

SELECT * FROM articles
ORDER BY FIELD(id, 3, 2, 5, 7, 8, 1);
로그인 후 복사

이 쿼리에서는 FIELD() 함수를 사용하여 두 번째 매개변수 값의 순서에 따라 결과를 정렬합니다. IN() 절에 지정된 순서는 [4, 7, 3, 8, 9]이지만 결과는 3, 2, 5, 7, 8, 1로 반환되기를 원합니다. 따라서 값을 제공합니다. FIELD()의 두 번째 매개변수와 동일한 순서로 지정됩니다. 이렇게 하면 기사가 원하는 순서로 반환됩니다.

위 내용은 IN() 및 FIELD()를 사용하여 사용자 정의 시퀀스로 MySQL 쿼리 결과를 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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