2010-02-27 4 views
10

예를 들어 IN을 사용하여 표에서 행 집합을 선택할 때MySQL 결과를 IN 순서로 정렬 하시겠습니까?

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12) 

다시 IN 세트에 주어진 순서대로 그들을 얻을 수있는 SQL 트릭이있다?

예에서 x에 ids 23, 55, 44 및 12가있는 행이 있다고 가정하면이 네 개의 행이이 순서로 반환됩니다.

답변

12
SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12) 
ORDER BY FIELD (x.id, 23, 55, 44, 12) 
+0

MySQL 5.0에서는 ORDER BY FIELD가 지원됩니까? A : 예, 그렇습니다! 방금 확인 했어. –

4

당신은으로 FIND_IN_SET를 사용할 수 있습니다 그것의 얼굴에

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12) 
ORDER BY FIND_IN_SET(x.id,'23, 55, 44, 12'); 
+1

, 당신의 대답과 스티브의 사이에 선택할 수있는 것은 없다. 하지만 받아들이겠습니까? 필자가 시도한 간단한 테스트에서 필드 순서는 두 배 이상 빠릅니다. –

관련 문제