我有一个表'订阅',当我排序顺序记录我得到错误的结果。我的结果不排序,由MyColumn排序错误记录
我的查询是:
Select Subscriptioncode from Subscription order by Subscriptioncode desc
我喜欢的结果为:
90
80
8
700
73
634
100
为什么得到这样的结果?
在SubscriptionCode某行为空。
我有一个表'订阅',当我排序顺序记录我得到错误的结果。我的结果不排序,由MyColumn排序错误记录
我的查询是:
Select Subscriptioncode from Subscription order by Subscriptioncode desc
我喜欢的结果为:
90
80
8
700
73
634
100
为什么得到这样的结果?
在SubscriptionCode某行为空。
你列SubscriptionCode
目前是不是一个数字类型,它可能是一个文本类型,而不是。但是,您可以CAST
此列到INT
类型,然后顺序应该没有问题的工作:
Select Subscriptioncode from Subscription
order by CAST(Subscriptioncode AS INT) desc
你应该申报Subscriptioncode列数据类型为INT
例
create table Subscription(
Subscriptioncode int)
insert into Subscription values('90')
insert into Subscription values('80')
insert into Subscription values('8')
insert into Subscription values('700')
insert into Subscription values('73')
insert into Subscription values('634')
insert into Subscription values('100')
Select Subscriptioncode from Subscription order by Subscriptioncode desc
输出:
Subscriptioncode
700
634
100
90
80
73
8
注:
当你正在申报比INT防爆其他数据类型:的Varchar
- >它会像排序字母顺序 IE)值进行排序ABC
这就是你正在得到错误的结果。所以选择正确的数据类型。
您可以使用以下与在年底或启动顺序空值递减顺序检索数据(你提到你的列名包含Null也)
select column-name from table-name order by case when column-name is null then 1 else 0 end,cast(column-name as int)desc
它retrive结果为空在结束(空值在开始改变以1比0和0比1)
如果你不想指定空位置,然后你可以使用
Select column-name from table-name order by cast(column-name as int)desc
什么是SubscriptionCode的数据类型? –
你在排序字符串,而不是数字。 –