我想做出讓我的查詢排序條件,所以如果它satisfiess的條件,應該由降MS SQL:有條件的ORDER BY ASC/DESC問題
例如訂購:
SELECT * FROM Data ORDER BY SortOrder CASE WHEN @Direction = 1 THEN DESC END
我想做出讓我的查詢排序條件,所以如果它satisfiess的條件,應該由降MS SQL:有條件的ORDER BY ASC/DESC問題
例如訂購:
SELECT * FROM Data ORDER BY SortOrder CASE WHEN @Direction = 1 THEN DESC END
不要改變ASC
或DESC
,改變被分類,通過事物的標誌:
SELECT * FROM table
ORDER BY
CASE WHEN @Direction = 1 THEN -id else id END asc;
的OP問:
夥計們,我不是專家的SQL,請給我解釋一下什麼意思ID和-id,確實它控制排序方向?
id只是您正在排序的任何列; -id只是否定,id * -1。如果你被一個以上的列進行排序,你需要否定的每一列:
SELECT * FROM table
ORDER BY
CASE WHEN @Direction = 1 THEN -id else id END
CASE WHEN @Direction = 1 THEN -othercolumn else othercolumn END ;
如果你通過一個非數字列排序,你需要找到使該列的表達式「負」;寫一個函數來做到這一點可能會有幫助。
SELECT *
FROM Data
ORDER BY
Case WHEN @Direction = 1 THEN SortOrder END DESC,
Case WHEN 1=1 THEN SortOrder END
您也可以使用它支持所有字段類型的方案:
SELECT <column_list> FROM <table> ORDER BY CASE WHEN @sort_order = 'ASC' AND @sort_column = '<column>' THEN <column> END ASC, CASE WHEN @sort_order = 'DESC' AND @sort_column = '<column>' THEN <column> END DESC
夥計們,我不是SQL專家,請解釋我是什麼意思id和-id,它是否控制了排序方向? – Shimmy 2009-04-17 01:18:18