>데이터 베이스 >MySQL 튜토리얼 >MySQL `IN` 쿼리에서 값의 순서를 유지하는 방법은 무엇입니까?

MySQL `IN` 쿼리에서 값의 순서를 유지하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-26 08:39:13769검색

How to Preserve the Order of Values in a MySQL `IN` Query?

MySQL "IN" 쿼리에서 시퀀스 보존

MySQL에서 "IN" 연산자는 제공된 목록의 값과 일치하는 레코드를 선택합니다. . 기본적으로 결과는 데이터베이스의 정렬 알고리즘에 의해 정의된 순서로 반환되며, 이는 쿼리에 지정된 순서와 항상 일치하지 않을 수도 있습니다.

다음 예를 고려해 보겠습니다.

SELECT * FROM foo f WHERE f.id IN (2, 3, 1);

이 쿼리는 ID가 2, 3, 1인 레코드를 검색하는 것을 목표로 합니다. 그러나 결과는 일반적으로 ID를 기준으로 정렬됩니다. 오름차순:

+----+--------+
| id | name   |
+----+--------+
|  1 | first  |
|  2 | second |
|  3 | third  |
+----+--------+

쿼리에 지정된 순서를 유지하려면 결과를 명시적으로 정렬해야 합니다. ORDER BY FIELD() 함수를 사용하면 됩니다.

SELECT * FROM foo f WHERE f.id IN (2, 3, 1)
ORDER BY FIELD(f.id, 2, 3, 1);

FIELD() 함수는 값을 첫 번째 인수로, 값 목록을 나머지 인수로 사용합니다. 목록에서 값의 위치를 ​​반환합니다. 예를 들어 FIELD(2, 2, 3, 1)은 2가 목록의 첫 번째 값이기 때문에 1을 반환합니다.

FIELD(f.id, 2, 3, 1)를 기준으로 결과를 정렬하면 MySQL에게 먼저 레코드를 첫 번째 값(2)으로 정렬한 다음 두 번째 값(3), 마지막으로 세 번째 값(1)으로 정렬하도록 지시합니다. 이 순서를 사용하면 결과가 쿼리에 나타나는 순서와 동일한 순서로 반환됩니다.

+----+--------+
| id | name   |
+----+--------+
|  2 | second |
|  3 | third  |
|  1 | first  |
+----+--------+

위 내용은 MySQL `IN` 쿼리에서 값의 순서를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.