orderd mysql_MySQL ORDER BY子句简介

当使用该SELECT语句从表中查询数据时,结果集不会排序。这意味着结果集中的行可以按任何顺序排列。

要对结果集进行排序,请将ORDER BY子句添加到SELECT语句中

SELECT select_list FROM table_name  ORDER BY  column1 [ASC|DESC],column2 [ASC|DESC],

...;

使用这种语法,可以在ORDER BY子句后指定要排序的一列或多列。

该ASC代表升序和DESC代表降序。ORDER BY子句按升序对结果集排序:

ORDER BY column1 ASC;

此ORDER BY子句对结果集按降序排序:

ORDER BY column1 DESC;

默认情况下,如果您未明确指定任何选项,则该ORDER BY子句使用ASC。

如果要按多列对结果集进行排序,请在ORDER BY子句中指定以逗号分隔的列列表:

ORDER BY

column1,

column2;

可以对结果进行升序排列,然后再对另一列进行降序排列:

ORDER BY

column1 ASC,

column2 DESC;

在这种情况下,该ORDER BY子句:首先,按照值column1升序对结果集进行排序。

然后,按值column2  降序对排序的结果集进行排序。请注意,column1在此步骤中不会更改,只会column2更改值中的顺序。

请注意,该ORDER BY子句始终在FROMand SELECT子句之后进行求值。

示例A  使用MySQL ORDER BY子句对一列示例中的值进行排序

以下查询使用该ORDER BY子句按contactLastName列中的值以升序对客户进行排序。SELECT contactLastname, contactFirstname FROM customers

ORDER BY contactLastname;

be1b8a579b8e9b7ebdf3d2c803843ac7.png升序排列

SELECT contactLastname, contactFirstname FROM customers

ORDER BY contactLastname DESC;

8e04f8d303b03bb40a9b3251811b1205.png降序排列结果

示例B  使用MySQL ORDER BY子句对多列中的值进行排序

如果你想在升序排列的第一个名字降序排列,然后将客户的姓氏升序排序,此时需要同时指定   DESC并ASC在相应的列如下:

SELECT contactLastname, contactFirstname FROM customers

ORDER BY contactLastname DESC, contactFirstname ASC;683d68e8322074a48d9cdea8a19ce001.png先降序,再升序排列

在此示例中,该ORDER BY  子句首先按姓氏降序对结果集进行排序,然后按名字按升序对排序后的结果集进行排序以生成最终结果集。

示例C) 使用MySQL ORDER BY通过表达式示例对结果集进行排序

示例数据库中orderdetails订单明细表8a0d757706ba5102098e465780cff771.png订单明细表

以下查询从orderdetails表中选择订单行项目。它计算每个订单项的小计,并根据小计对结果集进行排序。

SELECT orderNumber, orderlinenumber, quantityOrdered * priceEach

FROM orderdetails

ORDER BY quantityOrdered * priceEach DESC;36b2c539a5e00ca0c3ec0b447725fcac.png

为了使查询更具可读性,您可以为SELECT子句中的表达式分配一个列别名,并在子句中使用该列别名,ORDER BY如以下查询所示:

SELECT  orderNumber, orderLineNumber, quantityOrdered * priceEach AS subtotal

FROM orderdetails ORDER BY subtotal DESC;

5746eac69ca939a3e953cfe98f043a14.png别名

在此示例中,我们用作表达式subtotal的列别名,quantityOrdered * priceEach并按别名对  结果集进行排序subtotal。

可以在ORDER BY子句中使用列别名,因为在SELECT子句之前先评估该ORDER BY子句。在ORDER BY评估该子句时,可以访问列别名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值