2013-06-06 95 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