如何对SQL结果进行排序,但保留一些特殊结果呢?

Loo*_*fer 4 .net sql sorting

我有一个SQL查询的结果,我想按字母顺序排序,但有一些常用的结果,我想浮到顶部.有没有一种简单的方法可以通过巧妙的SQL或一旦我填充它来对(asp.net)数据表进行排序来实现这一点?

我知道我希望保持最佳状态的数据库ID,如果这有所不同的话.

Ben*_*ter 10

最简单的方法是按照将其他字段设置为其他字段的方式排序...

假设您有权修改表格的结构(您可能没有),然后添加"粘性"字段,允许您将项目标记为粘性,并根据需要将订单附加到粘性项目.在常规排序之前按此字段排序.

至于在没有定义该字段的情况下执行此操作的技巧 - 您需要按照您可以在这些字段中找到的某些数据进行排序,或者将ID保存在单独的表中 - 或查询中的列表...不是最理想的方式,但它会奏效.


End*_*ssa 6

您可以定义一个自定义列,设置可以排序的"特殊标志".然后,按字母顺序排序.

SELECT ...
    IsSpecial = CASE WHEN RowID IN (100,534,203) THEN 1 ELSE 0 END
FROM ...
ORDER BY IsSpecial DESC, RowID ASC, Name ASC
Run Code Online (Sandbox Code Playgroud)


Cha*_*ana 5

只是通过一个case语句来命令,它使用你指定的任何规则......

  ...
   Order By Case 
      When [My Rules that designate special] 
       Then 0 Else 1 End
Run Code Online (Sandbox Code Playgroud)