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仅返回一行