爲什麼當我使用order by seriq asc
並且有一個類似 「10000」, 「100000」 號 「97000」爲了通過seriq ASC顯示錯誤的結果
劇本給我的結果:
1: 10000
2: 100000
3: 97000
?
爲什麼當我使用order by seriq asc
並且有一個類似 「10000」, 「100000」 號 「97000」爲了通過seriq ASC顯示錯誤的結果
劇本給我的結果:
1: 10000
2: 100000
3: 97000
?
快速的解決辦法是對MySQL進行字符串轉換爲數值的ORDER BY子句。
查詢更改爲:
ORDER BY seriq+0 ASC
注意,MySQL將嘗試任何字符串轉換爲數值,讀取字符到第一個「無效」字符,例如'123A'將被轉換爲數值123.
這當然不會考慮'seriq'上的任何索引。 –
將列類型更改爲int是最佳解決方案,因爲它可以爲您提供最佳的數據存儲和性能。但是,如果這是不是一種選擇,以下解決方法是可能的:
select * from foo order by seqid+0
此柱強制命令的類型轉換爲int和排序情況數值。
'seriq'是什麼類型? –
賭它不是int – 2013-02-07 23:35:08
結果是一個字母排序。 – Oerd