2015-09-16 24 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