我通常使用一个结构,有点像:
ORDER BY CASE WHEN Location = 'ROOT' THEN '~' ELSE Location END
在 ASCII 环境中,这会成功地将所有Location
为 ROOT
的记录推送到末尾,而所有其他记录则正常排序。这是因为"~"字符接近字符集的末尾。但是,随着比 ASCII 更普遍地使用字符集更宽的数据库,我预计这种技术偶尔会不起作用。
还有什么选择?具体来说,我想要一种技术,可以将字段中具有特定值的记录推送到列表的末尾。
我主要使用MS SQL,但我也会对通用技术和与Oracle一起使用的技术感兴趣。
要将带有Location = 'ROOT'
的值推到最后,请尝试以下操作:
ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location
ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location