sql的一个奇技淫巧,随心所欲地排序。


如flag列的值有0,1,2;现要排序,按1,0,2的顺序来排,怎么排?显然,用order by flag asc或desc都行不通。


方法是使用case when的方式把值重新设置,根据这个新的字段排序即可。

如下:


select flag,
case flag
when 1 then 1000 -- flag=1时把值设为1000
when 0 then 999  -- flag=0时把值设为999
end as newFlag -- 重命名为newFlag字段
from tab
order by newFlag desc -- 按newFlag排序

同样,如果字段存的是字符串,也可以通过case when的这种方式赋值“生成一个新字段”,达到随心所欲排序的目的。

在MySql中测试通过;由于手上没有Sql Server,没测这个数据库。


之前工作中遇到的一个类似问题的解决方案,记录下。

类别:数据库   阅读(0)   评论(0)    发表时间:2018-11-07 22:02  星期三

评论区

发表评论

        姓名:
邮箱|网站:
        内容:

  (可按Ctrl+Enter提交)