作者liu2007 (薯)
看板Database
标题[SQL ] 数字由大到小,但是NULL要排在更前面
时间Sat Aug 20 01:53:32 2022
资料库名称:SQLite
资料库版本:SQLite 3
内容/问题描述:
我想对某一行由数字组成的字串做排序,规则是:
按照其自身数字的意义,由大到小进行排列
若内容值是NULL,则必须排在数字前面,NULL跟NULL彼此排序与否无所谓
例如有一行资料如下123,127,NULL,65,NULL,9657
我需要将他排成 NULL, NULL, 9657, 127, 123, 65
我查了一下可以在ORDER BY里面使用CASE
但大多数的范例使用的CASE 都是在某条件下使用其他行进行排序
例如如果两笔资料的同一行相同,则排序其他行的资料来决定顺序。
另外其中一个范例是 CASE WHEN XXX = XXX THEN 1 ELSE 2 END
不太懂这麽写的意思意义在哪.....
以上就是我的问题,望各位赐教,感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.192.225.144 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1660931615.A.01E.html
1F:→ Iories: Case When [栏] is Null Then 99999999 Else [栏] End 08/20 08:39
2F:→ Iories: 数字比实际最大值还大就可以 08/20 08:40
https://imgur.com/PoDvCzh.jpg
我试了一下仍会把NULL排在最小的前面
我目前在想要不要用merge两个selecet
※ 编辑: liu2007 (123.192.225.144 台湾), 08/20/2022 09:43:35
3F:→ konkonchou: order by publishDate NULLS first 08/20 09:54
https://imgur.com/8EF92TQ.jpg
太神啦,感谢大大
※ 编辑: liu2007 (123.192.225.144 台湾), 08/20/2022 10:08:09
4F:→ tedcat: 另外一个方式是在order by自建栏位order by case when fi 09/14 22:56
5F:→ tedcat: eld is null then 1 else 2 end asc, 然後原本栏位 desc 09/14 22:56