2011-10-25 2 views
0

내가쿼리 결과의 맨 위에 특정 값을 정렬하려면 어떻게해야합니까?

CREATE TABLE movies 
(
id int NOT NULL AUTO_INCREMENT, 
title varchar(100) NOT NULL default '', 
status int NOT NULL 
); 

상태가 1 ~ 4 수 상태 열이있는 테이블이 있고 난 상태로 결과를 정렬 할

내가 할 수 statusascdesc하고 얻을 쉽게 정렬 내 쿼리 상단에 값 1과 4가있는 행

$sql = "SELECT * FROM tbl order by `status` ASC"; 

결과의 맨 위에 2와 3을 어떻게 얻을 수 있습니까?

답변

2
select * 
from tbl 
order by case when status in (2, 3) then 0 else 1 end, 
    `status` 
+0

고맙습니다 남자 내가 질문에 "다른 0 1 종료 후"무엇인가가? – max

+0

@max :'CASE' 문은 인공적인 정렬 컬럼을 생성합니다. 'status'가 2 또는 3 일 때,'CASE'는 0을 반환합니다. 이것은 0보다 먼저 정렬됩니다 (ASC가 기본 동작 임). 그런 다음 행은'status'에 의해 정렬됩니다. – RedFilter

0
SELECT * FROM tbl where status IN (2,3) order by `status` ASC 
UNION 
SELECT * FROM tbl where status IN (1,4) order by `status` ASC 
0

당신은 (RedFilter의 응답으로) CASE를 사용하거나 FIELD() 기능 :

SELECT * 
FROM tbl 
ORDER BY FIELD(status, 2, 3, 1, 4) --- the order you prefer 
관련 문제