2016-01-19 75 views

回答

4

可以在ORDER BY使用CASE,相應地更改標誌:

... 
ORDER BY CASE WHEN DEPARTMENT_ID % 2 = 0 
     THEN -DEPARTMENT_ID 
     ELSE DEPARTMENT_ID END ASC; 
+0

雅,這將有助於謝謝。 –

1

使兩個查詢,第一個過濾器的賠率,第二對。按照您的意願訂購,然後聯合查詢。

SELECT e.* FROM (SELECT * 
FROM EMPLOYEE 
WHERE MOD(DEPARTMENT_ID, 2) = 1 
ORDER BY DEPARTMENT_ID ASC) e 
UNION ALL 
SELECT e1.* FROM (SELECT * 
FROM EMPLOYEE 
WHERE MOD(DEPARTMENT_ID, 2) = 0 
ORDER BY DEPARTMENT_ID DESC) e1 
+0

我正在使用oracle 11g。我用這個代碼不會工作(在用mod()替換'%'後) –

+0

好吧,我沒有知識來回答另外一個數據庫,而不是mysql,但你知道不了嗎?兩個單獨的查詢,你團結起來。 –

1

試試這個

SELECT * 
FROM EMPLOYEE 
ORDER BY CASE WHEN DEPARTMENT_ID % 2 = 1 then 1 else 2 end,DEPARTMENT_ID 
+0

訂單都是遞增的,只是把它們分成兩組。 Odd應該是ASC,甚至應該是DESC。 –