2012-09-12 98 views
0

我正在根據名稱列對錶進行排序,但它沒有正確排序。Mysql查詢不按名稱排序

它是這樣排序的: - 前20行基於字母順序排列,然後再次按字母順序排序。

這是我的查詢

select Name,ID from tbl_book order by Name Limit 0,100 

,這就是我得到

abcd|2 
bgry|3 
... 
... 
zref|100 
agtr|4 
dret|10 
... 
... 

任何一個知道爲什麼會這樣。

UPDATE

ID int(11) 
Name varchar(255) 

它的答案是

select ltrim(Name),ID from tbl_book order by 1 Limit 0,100 

鑑於TUXUDAY ..

+2

節目表架構 –

+1

是,實際的數據?也許你會區分大小寫,首先是所有的首都,然後是小寫的beginletters。 – GolezTrol

+0

@ WebnetMobile.com我想不管怎麼看都不錯。你是對的。 – think123

回答

1

試試此問題:

SELECT Name, ID 
FROM tbl_book 
ORDER BY LTRIM(Name) 
LIMIT 100; 

或者可能存在數據整理問題。試試這個也:

SELECT Name, ID 
FROM tbl_book 
ORDER BY LTRIM(Name) COLLATE latin1_swedish_ci 
LIMIT 100; 
+0

latin1_swedish_ci給出錯誤,並且名稱列的排序規則是latin1_swedish_ci,我將其更改爲utf8_general_ci。 –

+0

嘗試使用'LTRIM'還可以檢查'name'列的排序規則,查詢'SHOW TULL COLUMNS FROM tbl_book'? – Omesh

0

嘗試像

select name,id from tbl_book orderby name asc 

但是,如果你想放置限制,那麼你需要更新起始值並將極限值設置爲常量,如(100,20),(100,40),...

+0

相同的結果是... :( –

+0

看到編輯... – Gautam3164

+0

再次相同的結果... –

0

你可以試試這個:

SELECT Name,ID FROM tbl_book ORDER by Name ASC LIMIT 0,100