我有一个按column
排序的查询
select * from mytable order by column asc — sort table
column
类型为varchar,因此输出为:
1
10
100
11
12
13
如果我希望它们按数值排序,那么我应该如何排序,这样输出就是:
1
10
11
12
13
100
发布于 2009-12-09 02:37:20
使用:
order by cast(column as unsigned) asc
发布于 2011-12-28 18:25:52
如果您只想将column
视为INT
,则可以使用此选项:
SELECT * FROM mytable ORDER BY column+0;
1
10
11
12
13
100
或者,如果您想同时将column
视为INT
和VARCHAR
,则执行此操作
SELECT * FROM mytable ORDER BY column+0, column; #this will sort the column by VARCHAR first and then sort it by INT
abc
xyz
1
10
11
12
13
100
发布于 2015-04-20 19:02:51
如果我们只是稍微修改order by声明(在order by字段中添加“+0”),就可以强制MySQL对字段进行自然排序。
> select * from mytable order by column+0 asc;
column
1
10
11
12
13
100
https://stackoverflow.com/questions/1868965
复制相似问题