我有一個表'訂閱',當我排序順序記錄我得到錯誤的結果。我的結果不排序,由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的數據類型? –
你在排序字符串,而不是數字。 –