MySQL的排序,使用order by来实现.
order by id asc,表示用id升序排列
order by id desc,表示用id降序排列
当需要用多个字段排序时,order by cdate desc,id asc,表示先用cdate降序排列,cdate相同的再用id升序排列
str: 字段名 ,
先把分类全取出来,并随机排序,取排在第一个分类.
例如:西装
然后查询的时候 order by (category='西装') desc,category 即可实现要求.
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理.
MySQL这个名字,起源不是很明确.一个比较有影响的说法是,基本指南和大量的库和工具带有前缀"my"已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My.这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道.
MySQL的海豚标志的名字叫"sakila",它是由MySQL AB的创始人从用户在"海豚命名"的竞赛中建议的大量的名字表中选出的.获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供.根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字.
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库.它的历史也富有传奇性.
ORDER BY 默认按升序排列,所以呢 ASC (升序)子句是可选的.
另外,还可以按降序排列,为此可以使用 DESC(降序).
按从左到右的顺序依次根据 ORDER BY 子句中指定的列进行排序.
指定用于排序的列时,如果使用的是 SELECT 子句中列的数字位置,那么指定的数字不能超过 SELECT 子句中指定的列数.( 不能超出索引 )
通常,可以按 SELECT 子句中未指定的列进行排序,但必须指定列名.然而,如果在查询中使用了GROUP BY 或 DISTINCT 子句,就不能按SELECT 子句中未指定的列进行排序.
要求:显示部门编号为 10 的员工的姓名、职位和薪水,并根据薪水按从低到高的顺序排列想获得上面这样的数据结果
如果想对表中多个字段进行不同的排列如工资表按照升序排列,年龄按照降序排列
可以再ORDER之后用逗号隔开不同排列的字段
第二节为大家介绍了数据的查询,这一小节为大家深入讲解查询过程中的数据分组和排序,分组关键字为:group by,排序关键字为:order by,过滤分组的关键字为:having;
group by:对查询的数据按照某一类型进行分组, group by 一般用在order by子句之前,where子句之后
order by:对查询的数据进行某一类进行排序 或 对分组后的数据进行排序
having:对分组后的数据进行条件过滤
继续以上一章创建的客户表为例,表名: customer ,表有列: cus_id,cus_no,cus_name,cus_age,cus_adds.
eg:查询客户的基本信息,以id进行分组: select?cus_id,count(*) as num from?customer group by?cus_id;? num表示对应的cus_id有多少客户数据, 查询结果如下
如果分组的列中有null值,那么null将作为一个分组返回,如果有多个行都为null值,它们将会被分为一组返回. group by 必须用在where子句之后,order by子句之前.
除group by可以进行分组过滤数据外,having也可以进行过滤分组;having过滤和where类似,唯一区别在于where是过滤行,而having是过滤分组,可看以下列子:
order by主要用于数据排序的情况,当查询数据量较大时,有序的数据会让人更好地直观观察数据,order by 关键字用于对结果集按照一个列或者多个列进行排序.此外order by 关键字默认按照升序对记录进行排序.如果需要按照降序对记录进行排序,您可以使用 DESC 关键字.使用方法如下
eg:查询客户的基本信息,以年龄进行排序,默认升序:select?* from?customer order?by?cus_age;
eg:查询客户的基本信息,以年龄进行排序,降序方式排序:select?* from?customer?order?by?cus_age DESC;
升序使用ASC,降序使用DESC,系统默认为升序.注意两者之间的差异
当对多个列进行排序时,order by使用方法如下:
order by A,B? ?--过滤数据都是默认按升序排列
order by A desc,B? ?--过滤数据时 A 降序,B 升序排列
order by A ,B desc? ?--过滤数据时 A 升序,B 降序排列
desc?或者?asc?只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序.
本小节介绍排序分组就到这里了,通过多分组排序的介绍,知道了group by,order by,having三者之间的差异和区别,大家可以在自己电脑多编写几个脚本,深入了解三个关键字的使用.