当前位置: 首页 > 面试题库 >

MS Sql:有条件的按ASC / DESC排序的问题

上官琦
2023-03-14
问题内容

我想使查询中的排序成为条件排序,因此,如果满足条件,则应通过降序排序

例如:

SELECT * FROM Data ORDER BY SortOrder CASE WHEN @Direction = 1 THEN DESC END

问题答案:

请勿更改ASCDESC,更改要排序的事物的符号:

SELECT * FROM table 
ORDER BY 
CASE WHEN @Direction = 1 THEN -id else id END asc;

OP问:

伙计们,我不是SQL Expert,请向我解释一下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 ;

如果按非数字列排序,则需要查找使该列为“负”的表达式;编写一个函数来这样做可能会有所帮助。



 类似资料:
  • 问题内容: 在MS SQL Server 2008 R2中编写存储过程,我想避免使用DSQL … 我希望有条件的排序方法(ASC或DESC)。 现在,对于一个数字列,我将只使用一个case语句并取反该值以模拟ASC或DESC …即: 用alpha列执行此操作的合适方法是什么? 编辑:我想到了一个聪明的方法,但似乎效率很低…我可以使用自动编号将有序的alpha列插入到临时表中,然后使用上述方法按自动

  • 问题内容: 在发现了惊人的发现之后,我再次陷入了困境。 问题是我有一个形式的字典,我需要按其整数值的降序对其进行排序, 但是 如果两个元素的值相同,则按键的升序排列。 一个使它更清楚的例子: 经过研究后,我得出以下结论: 这是因为它对值和键都进行了反向排序。我需要不撤消的钥匙。 问题答案: 就像是

  • 问题内容: 我只是想按ID对评论进行排序,但是这样做并不幸运。无法弄清楚该怎么办,因为这使我感到困惑: 你们碰巧知道我如何通过DESC中的ID来订购评论吗?谢谢! 问题答案: 首先,您要进行两次相同的操作。这是不必要的,因为您可以计算行数并从单个查询中获取数据。除此之外,用注释表的唯一ID替换您,即可设置好。替换为以颠倒排序顺序。

  • 问题内容: 我尝试按ASC顺序在表上使用Spring-Data-JPA创建应用程序,但它给了我一个错误: 为什么 ? 或者 问题答案: 尝试在“全部”和“订单”之间添加“按”,如下所示:

  • 问题内容: 我了解我可以按如下顺序在sql查询中按顺序使用变量: 但是我也该如何在asc和desc部分中使用变量? 问题答案: 没有每个选项,它的子句例如:

  • 问题内容: 我有一条类似于上面的语句,它使我可以动态选择如何对查询结果进行排序。但是,如何指定要订购的姓氏和姓氏? 问题答案: 您需要将您的内容分为两部分: