orderd mysql

编程入门 行业动态 更新时间:2024-10-22 04:50:27

<a href=https://www.elefans.com/category/jswz/34/1426860.html style=orderd mysql"/>

orderd mysql

MySQL ORDER BY简介

当使用SELECT语句从表中查询数据时,结果集不会按任何顺序排序。要对结果集排序,请使用ORDER BY 子句。ORDER BY 子句允许您:按单列或多列对结果集排序。

按升序或降序对不同列进行结果集排序。

下面介绍了ORDER BY子句的语法:SELECT column1, column2,...

FROM tbl

ORDER BY column1 [ASC|DESC], column2 [ASC|DESC],...

ASC代表升序,DESC代表降序。如果未指定排序规则,默认情况下,order by子句按升序对结果集进行排序。

我们练习一些使用该ORDER BY 子句的例子。

MySQL ORDER BY示例

请参阅示例数据库中的下customers表。

以下从customers表中查询联系人,并按姓氏升序排序结果集。SELECT

contactLastname,

contactFirstname

FROM

customers

ORDER BY

contactLastname;

结果如下图所示:

如果要按联系人姓氏降序排序,请使用:ORDER BY contactLastname DESCSELECT

contactLastname,

contactFirstname

FROM

customers

ORDER BY

contactLastname DESC;

结果如下图所示:

如果你要按contactLastname升序排序,再按contactFirstname降序排序,可以使用以下sql语句:SELECT

contactLastname,

contactFirstname

FROM

customers

ORDER BY

contactLastname DESC,

contactFirstname ASC;

结果如下图所示:

MySQL ORDER BY与表达式示例排序

ORDER BY 子句还允许您基于表达式对结果集进行排序。

请参考orderdetails见下表。

以下SQL语句从orderdetails表中查询订单详细。并根据ordernumber,orderLineNumber和quantityOrdered * priceEach对结果集进行排序。SELECT

ordernumber,

orderlinenumber,

quantityOrdered * priceEach

FROM

orderdetails

ORDER BY

ordernumber,

orderLineNumber,

quantityOrdered * priceEach;

结果如下图所示:

为了使查询更具可读性,可以使用别名对下列查询进行排序:SELECT

ordernumber,

orderlinenumber,

quantityOrdered * priceEach AS subtotal

FROM

orderdetails

ORDER BY

ordernumber,

orderLineNumber,

subtotal;

我们为列quantityOrdered * priceEach区别名为subtotal,然后在排序的时候用别名subtotal代替quantityOrdered * priceEach,这样SQL代码更简洁易读。

MySQL自定义排序函数FIELD()

ORDER BY子句允许您使用FIELD()函数为列中的值定义自己的排序顺序。

请参orders见下表。

例如,如果要按照status字段值的以下顺序对orders表进行排序:In Process(处理中)

On Hold(等候接听)

Cancelled(取消)

Resolved(解决)

Disputed(争议)

Shipped(发货)

您可以使用order by结合FIELD函数实现,如:SELECT

orderNumber, status

FROM

orders

ORDER BY FIELD(status,

'In Process',

'On Hold',

'Cancelled',

'Resolved',

'Disputed',

'Shipped');

结果如下图所示:

Mysql order by语句的优化

在某些情况中,MySQL可以使用一个索引来满足ORDER BY子句,而不需要额外的排序。where条件和order by使用相同的索引,并且order by的顺序和索引顺序相同,并且order by的字段都是升序或者都是降序。

例如:下列sql可以使用索引。SELECT * FROM t1 ORDER BY key_part1,key_part2,... ;

SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;

SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;

但是以下情况不使用索引。1) order by的字段混合ASC和DESCSELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

2) 用于查询行的关键字与ORDER BY中所使用的不相同SELECT * FROM t1 WHERE key2=constant ORDER BY key1;

3)对不同的关键字使用ORDER BYSELECT * FROM t1 ORDER BY key1, key2;

更多推荐

orderd mysql

本文发布于:2024-02-06 09:51:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748260.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:orderd   mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!