SQL中Order By的意义和用法

以下内容参考w3school中关于SQL的教学,可以点击蓝字参考原文。

一、Order By的定义

ORDER BY 语句用于根据指定的列结果集进行排序

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

注:对字符串排序的时候会按首字符ASCII值排列,如果首字符相同,则向后看一位。

二、Order By的使用方法

原始的表 (用在例子中的):
Orders 表:

Company OrderNumber
IBM 3532
W3School 2356
Apple 4698
W3School 6953

实例 1
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company

Company OrderNumber
Apple 4698
IBM 3532
W3School 6953
W3School 2356

实例2
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:

Company OrderNumber
Apple 4698
IBM 3532
W3School 2356
W3School 6953

看此结果和上一结果不同之处在于,Company值相同的行,排序按照OrederNumber的升序排列。

实例 3
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:

Company OrderNumber
W3School 6953
W3School 2356
IBM 3532
Apple 4698

实例 4
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
结果:

Company OrderNumber
W3School 2356
W3School 6953
IBM 3532
Apple 4698

注意:在以上的结果中有两个相等的公司名称 (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的数值类型。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.SQL语句 IdLastNameFirstNameAddressCity1AdamsJohnOxford St...
    竖起大拇指阅读 264评论 0 1
  • sql基础教程 sql教程 什么是sql? SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一...
    Help_II阅读 324评论 0 0
  • SQL 是用于访问和处理数据库的标准的计算机语言。 什么是 SQL? SQL 指结构化查询语言SQL 使我们有能力...
    鹿守心畔光阅读 691评论 0 0
  • 查找 以及 Persons 表 获取名为 "LastName" 和 "FirstName" 的列的内容 结果 从 ...
    CharmingWong阅读 243评论 0 0
  • SQL基础教程。 注意: SQL 对大小写不敏感! SQL DML 和 DDL 可以把 SQL 分为两个部分:数据...
    究极丶小铠阅读 276评论 0 0