2013-04-27 2 views
1

나는 숫자 값으로 MySQL의 테이블에서 일부 행을 desc 내려 주문하고 싶습니다. 예 : SELECT * FROM table ORDER BY ABS(row1) DESC.MySQL의 PHP 쿼리 선택

표 형식 :

ID | 유형 | 값

1 | 2 | 42

2 | 1 | 52

3 | 2 | 67

4 | 2 | 50

5 | 1 | 15

6 | 1 | 27

7 | 3 | 48

8 | 3 | 23

그리고 나는 다음과 같은 결과를 얻으려면 - 제 2 형 및 DESC와 가치 DESC하지만 첫 공연 행에 의해 후에 정렬이 유형 1,3,4 (...) 행의 DESC :

ID | 유형 | 값

3 | 2 | 67

4 | 2 | 50

1 | 2 | 42

2 | 1 | 52

7 | 3 | 48

6 | 1 | 27

9 | 3 | 23

5 | 1 | 15

답변

0

으로 정렬 할 수 있습니다이있는 order by 당신이 원하는 :

표현이 type = 2 한 경우에 해당하는 부울 값을 반환

order by `type` = 2 desc, 
     value desc 
true이면 false이고 false 일 때 0입니다. 귀하의 예는 음수 값을 가지고 있지 않으므로 abs()을 볼 필요가 없습니다.

+0

작동!감사합니다. 또한 abs()는 실수였습니다. – IonutD

0

두 개 이상의 필드

SELECT * FROM table ORDER BY ABS(row1), row2, row3 DESC 
+0

난 형식 열을 주문하고 싶지 않아, 난 단지 값이 DESC 값이 2 인 첫 번째 행을 입력하고 유형 값이 1,3,4,5,6 ... – IonutD

+0

이라면 값을 ' BY column' – monkeyinsight

+0

나는 첫 번째 결과가 타입 2의 행이고 값이 DESC이고 그 결과가 나머지 (순서가 아닌) 순서이지만 값이 DESC 인 순서를 의미한다. 나는 주요 게시물을 유형 3으로 업데이트하여 사물을 명확히했습니다. 두 개의 쿼리를 PHP에서이 결과를 할 수 있지만 LIMIT 결과를 사용하기 때문에 단 하나의 쿼리를 사용하여이 작업을 수행 할 수 있는지 궁금 해서요. – IonutD