2017-08-01 29 views
0

我有一些ID已經在排序順序(65826,785555,456666)。我在select查詢中通過了這個輸入來獲取數據,但是在輸出中排序順序會改變並返回結果爲(456666,65826,78555);Postgresql - 9.1 IN參數改變了排序順序

select sku_id from blc_sku where sku_id in(65826 ,78555,456666)但輸出回報

sku_id 

65286 
78555 
456666 

,但預期的結果,

sku_id 

456666 
65286 
78555 

請幫我解決這個...

+0

謝謝維羅樽。它工作正常.. –

回答

2
t=> with v(a) as (values (2),(1),(3)) 
select * from v 
t-> where a in (1,2,3) 
t-> ; 
a 
--- 
2 
1 
3 
(3 rows) 

你看到結果是爲了符合數據,而不是爲了在IN中設置。儘管Postgres並不能保證這種行爲(並且你不能預測數據如何被滿足 - 這取決於緩存和我不知道的其他事情)。如果你想訂購的結果集使用ORDER指令:

t=> with v(a) as (values (2),(1),(3)) 
select * from v 
where a in (1,2,3) 
order by a desc; 
a 
--- 
3 
2 
1 
(3 rows) 

如果你有一個預購名單,你可以反對加入初始數據,喜歡這裏:

t=> with v(a) as (values (2),(1),(3)) 
, ordered (v,o) as (values(1,0), (2,1), (3,2)) 
select v.* from v 
join ordered on v.a=ordered.v 
order by o; 
a 
--- 
1 
2 
3 
(3 rows)