我想做出让我的查询排序条件,所以如果它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