$sql="SELECT * FROM stoc WHERE tip='$t' ORDER BY codint ASC LIMIT $offset, $rec_limit";
,其結果是MYSQL排序奧德
Acer1
Acer10
Acer11
Acer12
Acer2
,我想
Acer1
Acer2
Acer10
Acer11
Acer12
ENY想法?
$sql="SELECT * FROM stoc WHERE tip='$t' ORDER BY codint ASC LIMIT $offset, $rec_limit";
,其結果是MYSQL排序奧德
Acer1
Acer10
Acer11
Acer12
Acer2
,我想
Acer1
Acer2
Acer10
Acer11
Acer12
ENY想法?
嘗試按照列的長度和列自身的順序排序。如果其他字符串而不是Acer...
存在
SELECT * FROM stoc WHERE tip='$t'
ORDER BY LENGTH(codint),codint LIMIT $offset, $rec_limit"
雖然這可能有問題。
如果它們確實存在,我認爲你需要將字符串分割分解成字符串和數字,然後order by string,number
我已經修復它。它得到最後一個數字和順序由他們:http://rextester.com/OWE75092
SELECT `temp`,
convert(
right(
`temp`,
CHAR_LENGTH(`temp`) - Least(
Locate('0',concat(`temp`, '0')),
Locate('1',concat(`temp`, '1')),
Locate('2',concat(`temp`, '2')),
Locate('3',concat(`temp`, '3')),
Locate('4',concat(`temp`, '4')),
Locate('5',concat(`temp`, '5')),
Locate('6',concat(`temp`, '6')),
Locate('7',concat(`temp`, '7')),
Locate('8',concat(`temp`, '8')),
Locate('9',concat(`temp`, '9'))
) +1), UNSIGNED INTEGER) as myInt
FROM Table1
order by myInt;
非常接近,但如果找不到將返回0 http://rextester.com/NRSRUM8836 –
謝謝!我修好了!並把演示! –
SELECT 'A2' x UNION SELECT 'A11' ORDER BY x;
+-----+
| x |
+-----+
| A11 |
| A2 |
+-----+
SELECT 'A2' x UNION SELECT 'A11' ORDER BY x+0;
+-----+
| x |
+-----+
| A2 |
| A11 |
+-----+
我懷疑你將要添加一個單獨的列維護您的自定義排序次序。這將有利於您隨時更改該訂單。 – David