2009-11-03 10 views
0

나는 내 데이터베이스에서 원하는 순서대로 정보를 얻는 방법을 알아 내려고하고있다. 예를 들어, 내 데이터베이스에 아래의 이름이 :MYSQL 조합 또는 주문 하시겠습니까?

Matt 
Jimmy 
Craig 
Jenny 
Sue 

나는이 순서대로을 얻으려면 :

Sue 
Craig 
Jimmy 
Matt 
Jenny 

내가 MYSQL을 사용하는 것을 할 것 어떻게?

+1

그래서 당신이 사용하고자하거나 무작위 데이터베이스이 아닌 다른 이름을 가지고하지 않습니다 어떤 알고리즘이있다? – Cellfish

답변

1

사용 :

ORDER BY CASE t.name 
      WHEN 'Sue' THEN 1 
      WHEN 'Craig' THEN 2 
      WHEN 'Jimmy' THEN 3 
      WHEN 'Matt' THEN 4 
      WHEN 'Jenny' THEN 5 
      ELSE 6 
      END 

주문의 값에 따라 임의의 값을 할당하기 위해 CASE 문을 사용합니다. (내가 제대로 귀하의 요구 사항을 이해하고있는 경우)

5

물론, 당신은 이런 식으로 작업을 수행 할 수 있습니다

order by field(t.name, 'Jenny', 'Matt', 'Jimmy', 'Craig', 'Sue') desc 

편집 :

사실, 당신은 이미의 번호와 일반적인 경우를 처리하려면 알려진 값과 알 수없는 값의 수를 알고있는 경우 일반적으로 알려진 값을 결과 집합의 시작 부분 (미리 정의 된 순서대로)과 그 뒤에 오는 나머지 부분으로 나타낼 수 있습니다. 이를 위해 함수 인수 목록의 역순으로 사전 정의 된 값을 추가하고 순서를 내림차순으로 지정해야합니다.

'Sue'는 먼저 '012'를 표시하고 'Craig'- 초 (4가 반환 됨) 등 'Jenny'까지 표시됩니다. 인수 목록에없는 값의 경우 field은 0을 반환하므로 결과 집합의 끝으로 이동합니다.

참조 : FIELD