id列具有以下值:2,10,X,Y,D,G
我想这样排序:2,10,D,G,X,Y
我尝试了很多解决方案,结果就在这里
http://sqlfiddle.com/#!2/846ed/1
按id * 1排序;
排序结果:G X Y D 2 10
LPAD订购(id,20,'0');
排序结果:2 D G X Y 10
按CASE WHEN命令REGEXP'^ [0-9] + $'THEN id * 1 else 999999 END;
排序结果:2 10 G X Y D
答案 0 :(得分:1)
您需要使用不同的排序值:
SELECT id
FROM test
ORDER BY (case when id REGEXP('(^[0-9]+$)') then 0 else 1 end),
cast(id as unsigned),
id