适合初学者的MySQL学习笔记之ORDER BY子句使用详解

本文我们主要介绍了适合初学者的MySQL学习笔记之ORADER BY和GROUP BY子句的使用方法
首页 新闻资讯 行业资讯 适合初学者的MySQL学习笔记之ORDER BY子句使用详解

上次我们介绍了:适合初学者的MySQL学习笔记之SELECT语句使用详解,本次我们介绍一些适合初学者的MySQL学习笔记之ORDER BY子句的使用,接下来就让我们一起来了解一下这部分内容吧。

用ORDER BY子句排序结果

ORDER BY子句按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),缺省是升序。ORDER子句通常放在SQL语句的***。 ORDER子句中定义了多个字段,则按照字段的先后顺序排序。

例:

复制

SELECT ProductName,UnitPrice, UnitInStock   FROM Products   ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName
  • 1.

  • 2.

  • 3.

ORDER BY 子句中可以用字段在选择列表中的位置号代替字段名,可以混合字段名和位置号。

例:下面的语句产生与上列相同的效果。

复制

SELECT ProductName,UnitPrice, UnitInStock   FROM Products   ORDER BY 1 DESC , 2 DESC,3
  • 1.

  • 2.

  • 3.

运用连接关系实现多表查询

例:找出同一个城市中供应商和客户的名字

复制

SELECT Customers.CompanyName, Suppliers.ComPany.Name   FROM Customers, Suppliers   WHERE Customers.City=Suppliers.City
  • 1.

  • 2.

  • 3.

例:找出产品库存量大于同一种产品的定单的数量的产品和定单

复制

SELECT ProductName,OrderID, UnitInStock, Quantity   FROM Products, [Order Deails]   WHERE Product.productID=[Order Details].ProductID   AND UnitsInStock>Quantity
  • 1.

  • 2.

  • 3.

  • 4.

另一种方法是用 Microsof JET SQL 独有的JNNER JOIN

语法:

复制

FROM table1 INNER JOIN table2   ON table1.field1 comparision table2.field2
  • 1.

  • 2.

其中comparision 就是前面WHERE子句用到的比较运算符。

复制

SELECT FirstName,lastName,OrderID,CustomerID,OrderDate   FROM Employees   INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
  • 1.

  • 2.

  • 3.

注意:
INNER JOIN不能连接Memo OLE Object Single Double 数据类型字段。

在一个JOIN语句中连接多个ON子句,语法:

复制

SELECT fields   FROM table1 INNER JOIN table2   ON table1.field1 compopr table2.field1 AND   ON table1.field2 compopr table2.field2 OR   ON table1.field3 compopr table2.field3
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

也可以

复制

SELECT fields   FROM table1 INNER JOIN   (table2 INNER JOIN [( ]table3   [INNER JOER] [( ]tablex[INNER JOIN]   ON table1.field1 compopr table2.field1   ON table1.field2 compopr table2.field2   ON table1.field3 compopr table2.field3
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

外部连接返回更多记录,在结果中保留不匹配的记录,不管存不存在满足条件的记录都要返回另一侧的所有记录。

复制

FROM table [LEFT|RIGHT]JOIN table2   ON table1.field1comparision table.field2
  • 1.

  • 2.

用左连接来建立外部连接,在表达式的左边的表会显示其所有的数据

例:不管有没有定货量,返回所有商品

复制

SELECT ProductName ,OrderID   FROM Products   LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID
  • 1.

  • 2.

  • 3.

右连接与左连接的差别在于:不管左侧表里有没有匹配的记录,它都从左侧表中返回所有记录。

例:如果想了解客户的信息,并统计各个地区的客户分布,这时可以用一个右连接,即使某个地区没有客户,也要返回客户信息。
空值不会相互匹配,可以通过外连接才能测试被连接的某个表的字段是否有空值。

复制

SELECT *   FROM talbe1   LEFT JOIN table2 ON table1.a=table2.c
  • 1.

  • 2.

  • 3.

分组和总结查询结果

在SQL的语法里,GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明了按照哪几个字段来分组,而将记录分组后,用HAVING子句过滤这些记录。

GROUP BY子句的语法:

复制

SELECT fidldlist   FROM table   WHERE criteria   [GROUP BY groupfieldlist [HAVING groupcriteria]]
  • 1.

  • 2.

  • 3.

  • 4.

注意:Microsoft Jet数据库 Jet 不能对备注或OLE对象字段分组。GROUP BY字段中的Null值以备分组但是不能被省略。 在任何SQL合计函数中不计算Null值。 GROUP BY子句后最多可以带有十个字段,排序优先级按从左到右的顺序排列。

例:在‘WA’地区的雇员表中按头衔分组后,找出具有同等头衔的雇员数目大于1人的所有头衔。

复制

SELECT Title ,Count(Title) as Total   FROM Employees   WHERE Region = ‘WA’   GROUP BY Title   HAVING Count(Title)>1
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

关于适合初学者的MySQL学习笔记之ORDER BY子句使用方法就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. 介绍六个有用的MySQL的SQL语句

  2. MySQL大数据量快速插入方法和语句优化

  3. MySQL数据库完整备份与增量备份的原理简介

  4. 六条比较有用的MySQL数据库操作的SQL语句

  5. 详解xtrabackup对MySQL进行备份和恢复的全过程