IN () 절의 값 순서대로 정렬 할 수있는 방법이 있는지 궁금합니다.
문제는 두 개의 쿼리가 있다는 것입니다. 하나는 모든 ID를 가져오고 두 번째는 모든 정보를 검색합니다. 첫 번째는 두 번째로 주문하려는 ID의 순서를 만듭니다. ID는 IN () 절에 올바른 순서로 배치됩니다.
따라서 (매우 단순화 된) 것과 같습니다.
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
문제는 두 번째 쿼리가 ID를 IN () 절에 넣는 것과 같은 순서로 결과를 반환하지 않는다는 것입니다.
내가 찾은 한 가지 해결책은 모든 ID를 자동 증분 필드가있는 임시 테이블에 넣은 다음 두 번째 쿼리에 조인하는 것입니다.
더 나은 옵션이 있습니까?
참고 : 첫 번째 쿼리는 "사용자에 의해"실행되고 두 번째 쿼리는 백그라운드 프로세스에서 실행되므로 하위 쿼리를 사용하여 2 개를 1 개 쿼리로 결합 할 수있는 방법이 없습니다.
MySQL을 사용하고 있지만 다른 DB에도 어떤 옵션이 있는지 기록하는 것이 유용 할 수 있다고 생각합니다.
IN
과FIELD
동일한 매개 변수를 설정합니다. 추가 지식을 사용하면 프로그램 코드에서이 작업을 더 빠르게 수행 할 수 있습니다. 물론 서버 성능을 염두에두고 있다면 서버보다 클라이언트에이 부담을 가하는 것이 현명 할 수 있습니다.