2015-09-16 25 views
2

我有一個具有一列作爲主鍵的表,值是的PostgreSQL ORDER BY上文本列的數字部分子句

G1,G2,G3,...Gn 

我希望訂購數據,但問題是當我使用ORDER BY條款則顯示數據:

G1,G10,G11... G2,G20,G21, ... G3,G30,G31.... 

我使用的查詢是:

select * from myTable order by id asc; 
+0

@Glorfindel不是你提到的問題的重複,即使一個解決方案是存在的。這個問題是關於爲具有字母和數字字符的列創建新的PK。 – Patrick

回答

1

id列顯然是一些文本數據類型,所以排序是按字母順序排列的,而不是數字。爲了得到它的工作,從id列剝離「G」訂貨時:

SELECT * FROM mytable 
ORDER BY right(id, -1)::integer; 
+0

太棒了!謝謝!這工作 – Shoaib