2013-06-06 64 views
0

我想按升序排列est_dilt_pple表。按升序(数字)排序MySQL表

pub_name        est_dily_pple 
    Jex Max Publication       11530 
    BPP Publication Mumbai     123500  
    New Harrold Publication      12563 
    Ultra Press Inc.       9500 
    Mountain Publication      9300 
    Summer Night Publication     53698 
    Pieterson Grp. of Publishers    50000 

我想这

SELECT * FROM publisher ORDER BY est_dily_pple ASC; 

结果

pub_name        est_dily_pple 
Jex Max Publication       11530 
BPP Publication Mumbai     123500 
New Harrold Publication      12563 
Pieterson Grp. of Publishers    50000  
Summer Night Publication     53698 
Mountain Publication      9300 
Ultra Press Inc.       9500 

问题

但它不是ascendi NG。 “123500”比所有更多,它应该显示在底部。任何帮助我在这个请!

+0

该列的数据类型是什么? – NINCOMPOOP

+0

我不认为est_dily_pple具有Integer类型。 – user2336315

+0

我相信est_dily_pple是CHAR或VARCHAR,因为它是在串 改变它的类型方面得到分类为int – learner

回答

0

最好的解决办法是使列的数据类型为est_dily_pple数字。否则你可以试试这个:

SELECT * FROM publisher ORDER BY CAST(est_dily_pple as SIGNED INTEGER) ASC 
+0

是的,它会工作,但我认为这个错误是数据库的架构显然是错误的! – user2336315

+0

这将工作,但它将意味着每个SELECT的TABLE SCAN。你必须每行都做。 – duffymo

+0

我提到这是一个* secondary *解决方案。 – NINCOMPOOP

4

看起来像列是文本或varchar类型,带有字符串排序语义。

使它成为一个整数或数字类型,你会更好。

+0

@dyffymo“est_dily_pple”已经是整数类型。 – user2457175

+0

@ user2457175真的吗?告诉我们。 – user2336315

+0

我想不是......如果是这样,排序将是正确的,你不会有那个奇怪的呈现为一个值是一个问题。显示表格的DDL。 – duffymo