2016-08-05 44 views
2

我已經創建了一個MySql表。但是如果我將數據插入表中,則會出現問題。第二行的Mysql表ID爲10

我的錶行是這個樣子

ID  name 
RS1  a 
RS10  j 
RS2  b 
RS3  c 
RS4  d 
RS5  e 
RS6  f 
RS7  g 
RS8  h 
RS9  i 

爲什麼ID是10號在第二行補充的嗎? 我正在使用MySQL Workbench創建表,任何人都知道如何解決它?

+0

你如何查詢數據?記住:SQL表代表*無序*集。沒有固有的順序。您需要的任何順序都使用'ORDER BY'明確提供。 –

+0

你在Windows嗎?請記住,這不是一個數字,而是一個字符串,因此它是如何對列進行排序的。另外,正如指出的那樣,表並不固有地排序...工作臺可能會爲你做這種排序並使用Windows字符串排序... – Jarvis

回答

1

我推測,要查詢的表:

select t.* 
from t 
order by id; 

此訂單由id字母排序,而不是數字排序。由於「1」<「2」,「10」出現在「2」之前。

這裏有一個簡單的方法來解決這個問題:

select t.* 
from t 
order by length(id), id; 

還有其他的方法,如:

order by substr(id, 3) + 0 

該功能可將一切從第三個字符以後的號碼,這是更適合分揀。

+1

謝謝,這真棒回答 –

0

它正在按工作臺排序爲一個字符串。

除非需要在字符串值前添加id,否則如果您關心查看順序,我建議您使用自動增量字段。如果它是一個數字(自動增量),這不會是一個問題。

如果您想按時間順序排序,還可考慮使用createdcreated_atDateTime字段。

我的猜測是你是在一個Windows操作系統上,這是我經常遇到的這個字符串排序問題與預期不符的地方。

相關問題