【发布时间】:2009-06-03 13:06:04
【问题描述】:
我们目前正在重写我们的 CMS,我们希望我们的客户能够使用“位置”字段对表格中的项目进行重新排序。因此,如果他们将一个项目标记为位置 1,它将位于顶部,然后位于其下方的位置 2,依此类推。
问题是我们不希望他们每次都必须填写一个职位,只有当他们想要重新订购某些东西时,职位字段通常会是空白的。所以你可能有以下...
汽车 - 1
自行车 - 2
房子
电脑
狗
这会导致问题,因为如果您使用以下 SQL...
SELECT ProductName FROM Products ORDER BY Position DESC;
所有空白的都到顶部,而不是底部。
可以使用 SQL 语句将它们按正确的顺序排列吗?
【问题讨论】:
-
大卫 B 有正确的答案,按两个表达式排序。第一个表达式有几个替代方案,“技巧”是将所有非 NULL 值组合在一起。如果 'Position' 是数字,您可以轻松地为所有非 NULL 值生成 0 以将它们组合在一起... ORDER BY Position-Position DESC, Position DESC
标签: sql sql-server sql-server-2008