2011-01-06 3 views
0

) 강의실, 실험실, 강의실, 강당 순으로 주문해야합니다. 내가해야할 일은 ID로 그들을 정리하는 것입니다. 그래서 교실에서는 1시에 시작하여 그에 따라 올라갑니다.ORDER BY CASE 내 ASC/DESC 사용하기 (

유일한 필드는 roomID와 type 열입니다. 그것은 간단한데

SELECT * 
    FROM `rooms` 
ORDER BY CASE WHEN `type` = 'Classroom' 
    THEN 1 
    WHEN `type` = 'Computer laboratory' 
    THEN 2 
    WHEN `type` = 'Lecture Hall' 
    THEN 3 
    WHEN `type` = 'Auditorium' 
    THEN 4 
    END 

(이 SQL 함수 어떻게 응?로 보는 유형을 변경 함),하지만 난 그게 동작하지 않습니다. 그래서, 어쩌면 어리석은 질문 일 수 있기 때문에 어떤 도움이라도 대단히 감사하겠습니다.

답변

2

당신이해야 할 것처럼 보이는 것은 그 case 문을 쿼리 필드에 넣고 별칭을 지정하는 것입니다. 그런 다음 해당 별칭을 사용하도록 명령문별로 주문을 설정하십시오.

SELECT *, 
CASE 
WHEN type = 'Classroom' THEN 1 
WHEN type = 'Computer laboratory' THEN 2 
WHEN type = 'Lecture Hall' THEN 3 
WHEN type = 'Auditorium' THEN 4 
END AS ClassTypeValue 
FROM rooms 
ORDER BY ClassTypeValue 

이것이 올바르게 작동해야합니다.

+0

+1 @spinon 당신이 맞을지 모르지만 이것은 다른 dB에서 동일하게 작동하지 않을 것이라고 생각합니다. 예 : 당신이 필요로하는 곳과 Syed Abdul Rahman이있는 곳은 –

+0

입니다! 마지막 줄은 ORDER BY roomID 여야하지만 감사합니다. 그래서 내가 ASC 나 DESC로 무엇인가를 주문할 필요가 있다면 먼저 다른 사례를 '그룹화'해야 할 것입니다. –

+0

@conrad 당신이 옳을 수도 있습니다. 그가 db와 어떤 작업을하고 있었는지에 대한 태그가 없었기 때문에 나는 그것을 가능성 밖에서 던져 버렸습니다. – spinon

1

스핀 온의 대답은 당신을 위해 작동하지 않는 경우는 항상 그것을 인라인보기

SELECT * 
FROM 
(

    SELECT *, 
     CASE 
     WHEN type = 'Classroom' THEN 1 
     WHEN type = 'Computer laboratory' THEN 2 
     WHEN type = 'Lecture Hall' THEN 3 
     WHEN type = 'Auditorium' THEN 4 
     END AS ClassTypeValue 
    FROM rooms 
) t 
ORDER BY ClassTypeValue 
+0

이 코드는 어떤 의미에서 어떤 코드가 들어 있는지 보여주는 새로운 컬럼을 생성합니다. –

+0

@Syed Abdul Rahman. 두 가지 접근 방식이이를 수행합니다. 가장 큰 차이점은'ClassTypeValue'가 ORDER BY에 의해 인식 될 것이라는 점입니다. 신경 쓰지 않아도되는 작은 장점 중 하나는 ClassTypeValue가 SELECT에 나타나지 않아도된다는 것입니다. –

0
SELECT * 
FROM 
    (
    SELECT *, 
     CASE 
     WHEN type = 'Classroom' THEN 1 
     WHEN type = 'Computer laboratory' THEN 2 
     WHEN type = 'Lecture Hall' THEN 3 
     WHEN type = 'Auditorium' THEN 4 
     END AS ClassTypeValue 
    FROM rooms 
    ) t 
ORDER BY ClassTypeValue, maxppl, roomID 

이 내가 사용하는의 최종 쿼리입니다을 만들 수 있습니다 단지에. 도와 줘서 고마워하고 나에게 설명해 줘서 고마워.