orderby升序(orderby升序降序关键字)
sql 排序,order by 按时间
sql排序是指定时间字段才能按照时间排序,asc默认升序,desc默认降序。
ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
比如要排序:
select date from tablename order by date desc
按date降序排列。

sql order by升序
如果简单按你的题意这样写就行:
SELECT OrderNum,ProdNum,SuppCode,Quantity,TotalPrice
FROM Item order by TotalPrice DESC,Quantity ASC
当然:有可能你的总价是这样来的 总价=单项定购数量*单项总价 如果是这样的语句要做修改一下:
SELECT OrderNum,ProdNum,SuppCode,Quantity,TotalPrice,TotalPrice*Quantity AS 总价
FROM Item order by 总价 DESC,Quantity ASC
21《MySQL 教程》ORDER BY 排序
前面小节介绍了如何查询数据,并且介绍了如何使用 WHERE 条件对查询的数据结果集进行筛选,本小节介绍如何使用 ORDER BY 对查询结果集进行排序,排序在实际业务中非常有必要,可以较好地对结果集数据分析和处理。
ASC 是对结果集按照字段从小到大排序(升序),以 teacher 表为例,将查询出来的所有结果集按照年龄 age 从小到大排序:
执行结果如下图:
DESC 是对结果集按照字段从大到小排序(降序),以 teacher 表为例,将查询出来的所有结果集按照年龄 id 从大到小排序:
执行结果如下图:
以 teacher 表为例,将查询出来的结果集按照 age 从大到小排序之后,再按照 id 字段从小到大排序:
执行结果如下图:
前面排序的 age 和 id 字段是 int 类型,为了演示方便这里先插入几个 name 字段为英文名的教师测试数据,并对 name 字段排序,插入数据 SQL 语句如下:
对查询结果集按照 name 字段 ASC 升序排序:
执行结果如下图:
本小节介绍了如何使用 ORDER BY 对查询结果集按照值字段排序,其中包括 ASC 升序和 DESC 降序,需要注意的是各种数据的字符集可能不同,如中文字符编码 GBK编码、utf-8编码, 若需要经常对字符串类型字段进行排序,可以给该字符串字段加上普通 Bree索引,二级索引树字符串默认存储方式是按照字符集升序存储的(MySQL8.0 可自定义排序存储方式),所以有索引的字段排序性能比没有索引的字段排序性能好。
mysql ordery by 默认是如何进行排序的呢
mysql的orderby可以排序多个。
多个排序语法:
升序:select * from table_name order by 字段1,字段2;
降序:select * from table_name order by 字段1 desc,字段2 desc;
下面通个一个例子介绍:有表student,表记录有,当只做age的排序的时候,年龄从大到小的排列
当做age和id排序的时候,先是年龄排序,而同年龄时段的再按id大小排 。
? ? ? ?
mysql的order by可以排序多个,只需在order by 后面的字段用逗号隔开即可,多个排序是有效的。
? ? ?select * from table order by fileds limit 0,1000;
? ? ? 如果fileds相同,就会根据*号中第二列的默认排序,比如数值型的话就是从0、1、2、3这样,字符型可能就是首字母的顺序。
如果结果都一样就按照系统默认的排序排。
如果是 innodb引擎,会根据主键大大小,由小到大;
如果是myisam引擎,就根据数据插入顺序先后来排。
例如你表名 为test,sql 如下:
? ? ? ?select * from test order by `order` desc-----------------根据order降序排列,去掉末尾的desc就是升序。
注:order为关键字,所以字段order需要用反引号括起来,
SQL中Order By的意义和用法
以下内容参考 w3school 中关于SQL的教学,可以点击蓝字参考原文。
ORDER BY 语句用于 根据指定的列 对 结果集 进行 排序 。
ORDER BY 语句 默认 按照 升序 对记录进行排序。
如果您希望按照 降序 对记录进行排序,可以使用 DESC 关键字。
注:对字符串排序的时候会按 首字符 的 ASCII值 排列,如果首字符相同,则向后看一位。
原始的表 (用在例子中的):
Orders 表:
实例 1
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
实例2
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:
看此结果和上一结果不同之处在于,Company值相同的行,排序按照OrederNumber的升序排列。
实例 3
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
实例 4
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
结果:
注意:在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。
问题描述
Mysql排序时如果用的字段为字符型,排序出来时这样的:
1,10,2,20,3,4,5
这种排序是按照字符从第一个字符开始比较出来的,但不是我们想要的,我们想要的是:
1,2,3,4,5……,10,20
解决方案
排序时,把相应的字段转换成整型,使用CAST函数,如下:
CAST(seat_row AS UNSIGNED)
将seat_row列转换为UNSIGNED的数值类型。