交叉连接可以表A和表B是同一张表取得笛卡尔乘积。
比如说下面这种写法:

SQLSELECT D.n AS theday, S.n AS shiftno
FROM dbo.Nums AS Dcross JOIN dbo.Nums AS S
WHERE D.n <= 7AND S.N <= 3
ORDER BY theday, shiftno;

当然也可以表A和表B是两张不同的表,取得笛卡尔乘积。

SQLSELECT D.n AS theday, S.empid AS shiftno
FROM dbo.Nums AS Dcross JOIN [HR].[Employees] AS S
WHERE D.n <= 7AND S.empid <= 3
ORDER BY theday, shiftno;

但是CROSS JOIN不能用ON条件,只能用WHERE条件。下面这句与上面的语句查询结果相同。

SQLSELECT D.n AS theday, S.empid AS shiftno
FROM dbo.Nums AS Dinner JOIN [HR].[Employees] AS S
on D.n <= 7AND S.empid <= 3
ORDER BY theday, shiftno;

内联接查询,表A和表B中的数据必须紧密对应,不可以是Null。下面的查询中,Production.Products表中没有商品记录的的日本供货商不会被列出来。INNER这个关键词是可以舍去的,如果只写JOIN就表示INNER JOIN

SQLSELECTS.companyname AS supplier, S.country,P.productid, P.productname, P.unitprice
FROM Production.Suppliers AS SINNER JOIN Production.Products AS PON S.supplierid = P.supplierid
WHERE S.country = N'Japan';

外连接查询有三种情况:左外连接,右外连接,全外连接。
下面这个查询与上面这个查询写法只差一点点(WHERE变成了AND),但是结果就有区别:

SQLSELECTS.companyname AS supplier, S.country,P.productid, P.productname, P.unitprice
FROM Production.Suppliers AS SINNER JOIN Production.Products AS PON S.supplierid = P.supplieridAND S.country = N'Japan';

而且Production.Products表中没有商品记录的的日本供货商同样也会被列出来,但是相关的P.productid, P.productname, P.unitprice都会被记为NULL。
下面这句:

SQLSELECT E.empid,E.firstname + N' ' + E.lastname AS emp,M.firstname + N' ' + M.lastname AS mgr
FROM HR.Employees AS EINNER JOIN HR.Employees AS MON E.mgrid = M.empid;

用了内联接,则最高主管(CEO)不会被列出来,因为最高主管没有更高的主管了。
而改用左外连接

SQLSELECT E.empid,E.firstname + N' ' + E.lastname AS emp,M.firstname + N' ' + M.lastname AS mgr
FROM HR.Employees AS ELEFT OUTER JOIN HR.Employees AS MON E.mgrid = M.empid;

则CEO也会被列出来,CEO对应的mgr会被记为NULL。
套用内联接的左外连接:

SQLSELECTS.companyname AS supplier, S.country,P.productid, P.productname, P.unitprice,C.categoryname
FROM Production.Suppliers AS SLEFT OUTER JOIN Production.Products AS PON S.supplierid = P.supplieridINNER JOIN Production.Categories AS CON C.categoryid = P.categoryid
WHERE S.country = N'Japan';

查询出日本供货商的所有的产品以及产品类别名。而且Production.Products表中没有商品记录的的日本供货商同样也会被列出来,但是相关的P.productid, P.productname, P.unitprice, C.categoryname都会被记为NULL。
上面的语句与下面带括号的语句等同:

SQLSELECTS.companyname AS supplier, S.country,P.productid, P.productname, P.unitprice,C.categoryname
FROM Production.Suppliers AS SLEFT OUTER JOIN (Production.Products AS PINNER JOIN Production.Categories AS CON C.categoryid = P.categoryid)ON S.supplierid = P.supplierid
WHERE S.country = N'Japan';

RIGHT OUTER JOIN则与LEFT OUTER JOIN相反,根据ON条件和WHERE条件查询表A和表B,查询结果可以表A中数据为NULL。
FULL OUTER JOIN则只要表A和表B中任一表中有数据,结果都会被显示出来。无论是表A为NULL,还是表B为NULL。
OUTER也是可以被省略的。LEFT JOIN就是LEFT OUTER JOIN的简写,相应的,RIGHT JOINRIGHT OUTER JOIN的简写,FULL JOINFULL OUTER JOIN的简写。

T-SQL学习中--内联接,外连接,交叉连接相关推荐

  1. 4.mysql数据库创建,表中创建模具模板脚本,mysql_SQL99标准连接查询(恩,外部连接,全外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,运行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- ...

  2. 4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  3. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  4. 数据库学习之MySQL (十六)—— SQL99 外连接 左外连接 右外连接 全外连接 交叉连接

    文章目录 外连接 之 左外连接 与 右外连接 为啥要用外连接 全外连接 总结 内连接 外连接 交叉连接 外连接 之 左外连接 与 右外连接 我们先来看个之前的 女神男朋友的案例 传送:数据库学习之My ...

  5. Hibernate中使用左外连接

    hibernate中的左外连接要怎么设置呢? 很简单:设置fetch属性为EAGER即可.加载策略中:LZAY使用的是inner join:EAGER使用的是left join. @ManyToOne ...

  6. 一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接

    文章目录 笛卡尔乘积 连接查询分类 等值连接 非等值连接 自连接 外连接 交叉连接 连接查询又称为多表查询,当查询的字段来自于多个表时,使用连接查询. 笛卡尔乘积 笛卡尔乘积现象:表1有m行,表2有n ...

  7. 理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接

    一.多表查询 二.在 MySQL 中创建 book 和 actor 两张表 1 创建 book 表及添加数据 CREATE TABLE `book` (`id` INT PRIMARY KEY NOT ...

  8. 秒懂sql中的左外连接

    左外连接: 1.语法: SELECT 查询字段 FROM 查询表格(左表) LEFT JOIN 右表 ON 查询条件 2.左外连接查询的就是左表,那干嘛加个右表,岂不是没有作用: 区别在于左外连接是查 ...

  9. Oracle 内、外连接

    一.Oracle连接类型     ☆说明:按照自己的理解划分的类型,并不是官方定义. 1.内连接 ①等值连接 ②非等值连接 ③自然连接 2.外连接 ①左外连接 ②右外连接 ③全外连接 二.表数据准备 ...

最新文章

  1. 手把手教你使用Gene6FTP远程管理
  2. 重载函数与函数模板(转)
  3. os.system方法
  4. 时间序列研(part5)--四种典型的非平稳随机过程
  5. Python之Numpy入门实战教程(1):基础篇
  6. Subversion快速入门教程(SVN)
  7. centOS7查看防火墙状态
  8. JDBC单独了解一下
  9. android 换机 备份,Recovery(Android手机备份功能)
  10. 学计算机买戴尔笔记本哪款,戴尔笔记本大学生用,买哪款比较好?
  11. 处理:‘IplImage’ does not name a type; did you mean ‘image’?
  12. Prometheus(普罗米修斯)监控系统
  13. PAT-1068 万绿丛中一点红
  14. 夏夜也发低烧—夜的精灵[风潮唱片]
  15. 教师计算机课教学反思范文,信息技术课优秀教学反思
  16. 将[c语言中文网](http://c.biancheng.net/view/1380.html)的“”23 种设计模式“的网页转成pdf
  17. UEFI shell - 脚本文件
  18. vue源码分析系列三:render的执行过程和Virtual DOM的产生
  19. Finished with error: ProcessException: ProcessXXXXXXXexited abnormally 的解决方法
  20. Java计算税收代码实现

热门文章

  1. 自编码器参数是否需要相称呢
  2. 协方差与相关系数的再理解
  3. 机器学习的部分名词解释20180724
  4. roc与auc曲线的理解
  5. oracle订单,银科软件:Oracle ERP订单管理模块详细介绍
  6. python之jieba库
  7. 【存储知识学习】第五章-5.1-5.3 RAID磁盘阵列-《大话存储》 阅读笔记
  8. PMP知识点(三、范围管理)
  9. 笔记-信息系统安全管理-安全审计-作用
  10. Java中对接钉钉API获取数据流程