排序和限制查询排序

SELECT语句的ORDER BY子句,根据需要排序检索出的数据
单列排序(并指定方向)

使用ORDER BY可以对查询的结果进行升序(ASC)和降序(DESC)排列,在默认情况下,ORDER BY按升序输出结果。如果要按降序排列可以使用DESC来实现。语法格式如下:

升序排列

SELECT age,name FROM customers ORDER BY age ASC;

降序排列

SELECT age,name FROM customers ORDER BY age DESC;

多列排序(并指定方向)

为了按多个列排序,只要指定列名,列名之间用逗号分开即可(就 像选择多个列时所做的那样)。 下面的代码检索3个列,并按其中两个列对结果进行排序——首先按年龄,然后再按名称排序。

SELECT name,adress,age FROM customers ORDER BY age DESC,name ASC;

查询出性别为1的学生并根据年龄进行排序升序

SELECT * FROM studentinfo WHERE gender=1 ORDER BY age;

查询出性别为0的学生并根据年龄进行排序降序

SELECT * FROM studentinfo WHERE gender=0 ORDER BY age DESC;

注意:

在多个列上降序排序 如果想在多个列上进行降序排序,必须对每个列指定DESC关键字 与和ASC(ASCENDING)关键字

默认按照列值从小到大排列(asc) asc从小到大排列,即升序 desc从大到小排序,即降序

多列排序时将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推

限制查询
指定返回的行数

SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。下面举一个例子:

SELECT name FROM customers LIMIT 5;

此语句使用SELECT语句检索单个列。LIMIT 5指示MySQL返回 不多于5行
指定从第几行起,返回多少行

为得出下一个5行,可指定要检索的开始行和行数,如下所示:

SELECT * FROM 表名 LIMIT start,count

SELECT name FROM badboy LIMIT 5,5;

LIMIT 5, 5 指示MySQL返回从行5开始(不包含第5行)的5行。第一个数为开始 位置,第二个数为要检索的行数

注意: 行0 检索出来的第一行为行0而不是行1。

SELECT name FROM customers LIMIT 0,1;

因此,LIMIT 1, 1将检索出第二行而不是第一行。

SELECT name FROM customers LIMIT 1,1;

另一种写法 LIMIT 4 OFFSET 3意为从行3开始取4行,就像LIMIT 3, 4一样。

示例:分页

已知:每页显示m条数据,当前显示第n页求第n页的数据

SELECT * FROM sudents WHERE is_delete=0 LIMIT (n-1)*m,m

使用ORDER BY和LIMIT的组合

使用ORDER BY和LIMIT的组合能够找出一个列中最高或最低的值。 下面的例子演示如何找出最大的年龄的值
取最大值

SELECT name,age FROM customers ORDER BY age DESC LIMIT 1;
取最小值

SELECT name,age FROM customers ORDER BY age LIMIT 1; => SELECT name,age FROM customers ORDER BY age ASC LIMIT 1; LIMIT 1告诉MySQL仅返回一行

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

推荐阅读更多精彩内容

  • 10.3-10.23 共计21天 第一周:初出茅庐 作业:一周2本书,通过王者速读表检验表进行检验 本周目标:学习...
    不能空空阅读 410评论 0 0
  • 今天心血来潮的和老公去跑步,走走跑跑,来回一个小时,今年的冬天没有以前那么多的雾霾,但是空气里依然弥漫着一股刺鼻的...
    读读写写萧十一阅读 117评论 0 0