`

你不知道的order by

阅读更多

order by我们用过不知多少次了,但真的完全了解它的用法吗?

一。按照列名排序

这是最简单的方法,

select e from e_test order by e;

select e,d from e_test order by e,d;

select e from e_test order by e,d;

这三个语句都可以正常运行.当e相等时,按d排序,而且排序的列并不一定需要出现在select子句中。

二。根据表达式排序

select e from e_test order by substr(e,1,1);取开头的字符排序

order by子句中的表达式甚至可以包含子查询

如:select e from e_test order by abs(e-(select AVG(e) from e_test));

甚至可以是关联性子查询

如:select e,d from e_test as p1 order by (select AVG(d) from e_test as p2 where  p1.e=p2.e);

三。使用顺序号码排序

select e,d from e_test order by d;

select e,d from e_test order by 2;

这两个sql语句是相等的,使用顺序号码不是必需的,但简化了一条语句的形式.

select e,sum(d) from e_test order by 2;

select e,d,(select sum(c) from e_test as p1 where p1.e=p2.e) from e_test as p2 order by 3;

在编写order by子句的时候应该尽量地显示化而避免混淆,尽可能使用别名.

如:select e,d,(select sum(c) from e_test as p1 where p1.e=p2.e) as total from e_test as p2 orber by total;此句与前面那句相等,但不容易混淆。

四。按照升序和降序排序

ASC DESC一个升一个降,直接跳过。(注:排序字符值比较复杂,不同的字符集有不同的顺序)

五。对空值排序

mysql把空值当作一列中的最小值对待。

六。按指定排序排序

这一点是我偶然在mysql性能优化一书看到的

create table enum_test e ENUM('fish','apple','dog') NOT NULL;

insert into enum_test(e) values ('fish'),('dog'),('apple');

select e from enum_test order by field(e,'apple','dog','fish');

出来的结果会按照field里的先后顺序排序。


最后提醒一句:注意索引,order by可能导致索引无效。

分享到:
评论

相关推荐

    group by + order by

    ### Group By 和 Order By 的使用方法及组合应用 在数据库查询语言 SQL(Structured Query Language)中,`GROUP BY` 和 `ORDER BY` 是两个非常重要的子句,它们可以帮助我们更高效地管理和展示数据。 #### GROUP ...

    union all与order by用法

    UNION ALL 与 ORDER BY 用法详解 UNION ALL 和 ORDER BY 是 SQL 语言中的两个基本操作符,分别用于合并查询结果和排序数据。在 Oracle PL/SQL 中, UNION ALL 和 ORDER BY 的使用需要遵循一定的规则和限制。本文将...

    为什么SQL不许在视图定义ORDER BY子句

    然而,当你尝试在创建视图时使用`ORDER BY`子句,SQL Server会报错,因为这不符合ANSI SQL-92标准。这个标准规定视图不应该包含任何影响结果集顺序的操作,如`ORDER BY`,主要是出于以下几个原因: 1. **可重用性**...

    order by 、group by 、having的用法

    在SQL查询中,`ORDER BY`、`GROUP BY` 和 `HAVING` 是三个非常重要的子句,它们分别用于不同的数据处理操作。 1. **ORDER BY** 子句: - `ORDER BY` 用于对查询结果进行排序,按照指定的字段进行升序或降序排列。...

    MySQL中union和order by同时使用的实现方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明。首先看下面的t1表。 1、如果直接用如下sql语句是会报错:Incorrect usage of UNION and ORDER BY。 SELECT * FROM ...

    C# List OrderBy 动态多字段排序

    `OrderBy` 方法是 LINQ(Language Integrated Query) 提供的一个非常方便的排序工具,它允许我们按照一种或多种字段对数据进行升序排序。在某些情况下,我们可能需要根据动态指定的字段进行排序,这在处理复杂数据...

    C# IQueryable 的动态添加 OrderBy

    自动添加 OrderBy 或者 ThenBy,只要一直调用 OrderIf 扩展函数就行。 扩展函数中将自动判断 传入的 IQueryable 是否有调用过 OrderBy 函数。

    Linq OrderBy

    例如,如果你有一个包含人名的列表,你可以使用 `OrderBy` 来按照名字的字母顺序排列这个列表。`OrderBy` 需要一个谓词参数,这个谓词定义了排序的依据。在 C# 中,这通常是一个 lambda 表达式,如 `x => x.Name`,...

    MyBatisPlus条件构造器带条件排序方法orderBy、orderByDesc、orderByAsc使用示例代码

    在实际开发中,我们经常需要对查询结果进行排序,MyBatisPlus为此提供了`orderBy`、`orderByDesc`和`orderByAsc`三个方法,方便我们实现条件排序。下面将详细介绍这三个方法的使用及原理。 `orderBy`方法是...

    orcale 数据库中order by 的一些高级用法

    oracle数据库中order by的一些高级用法,该文件中,从order by的基本应用到order by的高级运用,该文件中均有体现

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    这意味着如果你期望`IN`列表内的值按照特定顺序输出,必须明确指定`ORDER BY`子句,将`IN`条件中的列作为排序依据。 在实际操作中,查看执行计划有助于理解Oracle如何处理查询。通过执行`EXPLAIN PLAN`或使用`DBMS_...

    Like-and-OrderBy.rar_sql like order by

    总结一下,LIKE和ORDER BY都是SQL查询中不可或缺的部分。LIKE提供了强大的字符串匹配功能,而ORDER BY则确保了查询结果的有序性。了解它们的用法和组合,能帮助我们在SQL查询中更加游刃有余。通过实际的数据库操作和...

    Nutz中select 包含 order by 的问题

    使用nutz, 直接写sql查询 select 中包含 order by 查询出错的问题修正

    order_by_、group_by_、having的用法区别

    order_by_、group_by_、having的用法区别

    深入解析mysql中order by与group by的顺序问题

    mysql 中order by 与group by的顺序是:selectfromwheregroup byorder by注意:group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效。要查出group ...

    深度分析mysql GROUP BY 与 ORDER BY

    本文就和大家一起深入研究下mysql中group by与order by.下面是我模拟我的内容表   我现在需要取出每个分类中最新的内容 select * from test group by category_id order by `date` 结果如下   明显。这不是我想...

    activiti5.9修复mysql order by 排序bug

    activiti5.9修复mysql order by 排序bug 详情见博客地址:http://blog.csdn.net/qq413041153/article/details/7740773#comments

    Mysql联合查询UNION和Order by同时使用报错问题的解决办法

    因此,常常出现这样的错误 代码如下:select * from [IND] where INDID>10unionselect * from [IND] where INDID<9>10 order by INDID descunionselect * from [IND] where ...难道UNION和ORDER BY 不能同时存在? union

    stream-orderby:nodejs 上流 json 对象的 orderby

    流顺序nodejs 上流 json 对象的 orderby ##例子: generator ( 5 ) . pipe ( orderBy ( [ { keys : 'grade.name,value' , reverse : true } , { getValue : function ( doc ) { return doc . age ; } , reverse : ...

    MySQL Order By索引优化方法

    - 在多表联接中,`ORDER BY`的字段不全来自第一个非常量表: - `ORDER BY`和`GROUP BY`表达式不同。 - 索引中的记录不是有序存储的,如`HASH`和`HEAP`表。 可以通过`EXPLAIN`语句查看MySQL是否在查询中使用了索引...

Global site tag (gtag.js) - Google Analytics