如何使用"order by"sql子句在开头使用指定数据对数据进行排序

rba*_*all 1 sql oracle plsql

我目前有一个表(/网格)的数据,我可以页面,筛选和排序.在桌子上我也有一个内置的复选框列.现在,分页,过滤和排序都发生在SQL查询中.我希望能够做的是按复选框列中单击的项目排序.这会将所有检查的项目带到表格的前面.由于复选框本身都是客户端,我不能告诉SQL查询按不存在的列排序(可能我需要动态创建一个?)

本质上我认为会发生的是,复选框ID值将被发送到查询中,SQL查询本身会以某种方式知道按先排序,然后由指定的其他查询排序.

有点像,点击1,2和3:

SELECT*FROM Blah ORDER BY(SELECT ID FROM Blah WHERE ID IN(1,2,3)),AnotherColumnToSort

无论如何,这是计划,任何人都有任何关于如何实现这一目标的想法?

更新:Smack我在Oracle数据库而不是SQL Server,就像我想象的那样.

Wel*_*bog 5

BIT字段设置1为选中行时,0否则,首先按该字段排序:

SELECT *
FROM Blah
ORDER BY Checked DESC, AnotherColumnToSort
Run Code Online (Sandbox Code Playgroud)

如果您不想(或不能)存储是否在表中检查了行,请使用以下CASE子句派生它:

SELECT *
FROM Blah
ORDER BY
  CASE
    WHEN ID IN (1, 2, 3) THEN 1
    ELSE 0
  END DESC,
  AnotherColumnToSort
Run Code Online (Sandbox Code Playgroud)