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 중국어 웹사이트의 기타 관련 기사를 참조하세요!