点击关注上方“SQL数据库开发”,
设为“置顶或星标”,第一时间送达干货
测试环境
SQL Server 2017
测试样表
我们新建两张测试表Customers和Orders,表结构如下:

表Customers

表Orders
要求:查询每个客户的订单数量
我们先直接写出查询语句:
SELECT a.CustomerName,Count(OrderID) NumsFROM Customers aLEFT JOIN Orders b ON a.CustomerID=b.CustomerIDGROUP BY a.CustomerName

要搞清楚这个结果是怎么来的,我们需要先知道一个概念:笛卡尔积。

... Customers a LEFT JOIN Orders b ...
SELECT B.CustomerID,B.CustomerName,A.OrderID,A.CustomerIDFROM Orders ACROSS JOIN Customers B

三值逻辑就是我们上面说到的ON返回的三个结果:TRUE,FALSE和UNKNOWN。
大多数的编程语言中返回的结果要么是TRUE,要么就是FALSE。而SQL中的UNKONWN通常与NULL值出现有关。
以下情况都会返回UNKNOWN:
NULL>21
NULL=NULL
X+NULL>Y
NULL代表一种缺失值,当把一个缺失值与其他任意值进行比较时,结果始终为UNKNOWN。
... a.CustomerID=b.CustomerID ...



参考文献
《Microsoft SQL Server 2008技术内幕:T-SQL查询》
荐书:《Oracle高性能系统架构实战大全》
编辑推荐: (1) 深入浅出:详解与 Oracle 数据库性能相关的方方面面,涵盖 Oracle 的体系架构及其背后的运行机制。
(2)直击难点:全面解析Oracle SQL 执行计划和Oracle SQL 性能分析与优化。
(3)全新实战:真实有效的实战案例再现Oracle数据库开发过程中的问题及解决思路。
(4)双管齐下:先设定方案,然后从应用角度和数据库角度综合考虑,逐一分析实现环境。如何购买: 点击阅读原文购买,也可点击下方小程序购买~
如何赠送:
1、必须是关注了本公众号的小伙伴
2、留言集赞数大于30赞且排名前五的小伙伴,每人赠送一本,定价128RMB。
3、截止2020年7月10日上午9:00
——End——
后台回复关键字:1024,获取一份精心整理的技术干货 后台回复关键字:进群,带你进入高手如云的交流群。 推荐阅读 这是一个能学到技术的公众号,欢迎关注
文章转载自SQL数据库开发,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






