适合初学者的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
ORDER BY 子句中可以用字段在选择列表中的位置号代替字段名,可以混合字段名和位置号。
例:下面的语句产生与上列相同的效果。
- SELECT ProductName,UnitPrice, UnitInStock
- FROM Products
- ORDER BY 1 DESC , 2 DESC,3
运用连接关系实现多表查询
例:找出同一个城市中供应商和客户的名字
- SELECT Customers.CompanyName, Suppliers.ComPany.Name
- FROM Customers, Suppliers
- WHERE Customers.City=Suppliers.City
例:找出产品库存量大于同一种产品的定单的数量的产品和定单
- SELECT ProductName,OrderID, UnitInStock, Quantity
- FROM Products, [Order Deails]
- WHERE Product.productID=[Order Details].ProductID
- AND UnitsInStock>Quantity
另一种方法是用 Microsof JET SQL 独有的JNNER JOIN
语法:
- FROM table1 INNER JOIN table2
- ON table1.field1 comparision table2.field2
其中comparision 就是前面WHERE子句用到的比较运算符。
- SELECT FirstName,lastName,OrderID,CustomerID,OrderDate
- FROM Employees
- INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
注意:
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
也可以
- 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
外部连接返回更多记录,在结果中保留不匹配的记录,不管存不存在满足条件的记录都要返回另一侧的所有记录。
- FROM table [LEFT|RIGHT]JOIN table2
- ON table1.field1comparision table.field2
用左连接来建立外部连接,在表达式的左边的表会显示其所有的数据
例:不管有没有定货量,返回所有商品
- SELECT ProductName ,OrderID
- FROM Products
- LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID
右连接与左连接的差别在于:不管左侧表里有没有匹配的记录,它都从左侧表中返回所有记录。
例:如果想了解客户的信息,并统计各个地区的客户分布,这时可以用一个右连接,即使某个地区没有客户,也要返回客户信息。
空值不会相互匹配,可以通过外连接才能测试被连接的某个表的字段是否有空值。
- SELECT *
- FROM talbe1
- LEFT JOIN table2 ON table1.a=table2.c
分组和总结查询结果
在SQL的语法里,GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明了按照哪几个字段来分组,而将记录分组后,用HAVING子句过滤这些记录。
GROUP BY子句的语法:
- SELECT fidldlist
- FROM table
- WHERE criteria
- [GROUP BY groupfieldlist [HAVING groupcriteria]]
注意: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
关于适合初学者的MySQL学习笔记之ORDER BY子句使用方法就介绍到这里了,希望本次的介绍能够对您有所收获!
【编辑推荐】
相关文章
- 从本体论开始说起——运营商关系图谱的构建及应用
- 如何成为一名数据科学家?
- 从未见过的堂兄杀了人,你的DNA是关键证据
- 20个安全可靠的免费数据源,各领域数据任你挑
- 20个安全可靠的免费数据源,各领域数据任你挑
- 阿里云李飞飞:All in Cloud时代,云原生数据库优势明显
- 基于Hadoop生态系统的一高性能数据存储格式CarbonData(性能篇)
- 大数据告诉你:10年漫威,到底有多少角色
- TigerGraph:实时图数据库助力金融风控升级
- Splunk利用Splunk Connected Experiences和Splunk Business Flow 扩大数据访问
- 大数据开发常见的9种数据分析手段
- 以免在景区看人,我爬了5W条全国景点门票数据...
- 【实战解析】基于HBase的大数据存储在京东的应用场景
- 数据科学家告诉你哪些计算机科学书籍是你应该看的
- Kafka作为大数据的核心技术,你了解多少?
- Spring Boot 整合 Redis 实现缓存操作
- 大数据学习必须掌握的五大核心技术有哪些?
- 基于Antlr在Apache Flink中实现监控规则DSL化的探索实践
- 甲骨文再次被Gartner评为分析型数据管理解决方案魔力象限领导者
- 爬取吴亦凡微博102118条转发数据,扒一扒流量的真假