我目前有一个数据表(/ grid)可以分页,过滤和排序。在桌子上我也有一个内置的复选框列。现在,分页,过滤和排序都在SQL查询中进行。我希望能够做的是按复选框列中单击的项目排序。这会将所有检查的项目带到表格的前面。由于复选框本身都是客户端,我不能告诉SQL查询按不存在的列排序(可能我需要动态创建一个?)
本质上我认为会发生的是,复选框ID值将被发送到查询中,SQL查询本身会以某种方式知道按先排序,然后按指定的其他排序。
点击1,2和3的地方:
SELECT * FROM Blah ORDER BY(从Blah WHERE ID IN(1,2,3)中选择ID),AnotherColumnToSort
无论如何,这是计划,任何人都有关于如何实现这一目标的任何想法?
更新: Smack 我在Oracle DB上,而不是像我想象的那样在SQL Server上。
答案 0 :(得分:5)
选中行时,BIT
字段设为1
,否则为0
,然后按该字段排序:
SELECT *
FROM Blah
ORDER BY Checked DESC, AnotherColumnToSort
如果您不想(或不能)存储是否在表中检查了行,请使用CASE
子句派生它:
SELECT *
FROM Blah
ORDER BY
CASE
WHEN ID IN (1, 2, 3) THEN 1
ELSE 0
END DESC,
AnotherColumnToSort
答案 1 :(得分:1)
我会避免重新查询你已经拥有的数据 - 它不会很好地扩展,你只会遇到问题。很多第三方网格都提供这种功能(我敢说,所有付费网格附近都有这个功能)。