FULL JOIN和CROSS JOIN的区别

  • FULL JOIN

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。(返回JOIN 两端表的所有数据,无论其与另一张表有没有匹配。显示左连接、右连接和内连接的并集)

FULL JOIN 关键字语法

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。

  • CROSS JOIN

这是所有连接的祖先。在使用CROSS JOIN时,不需要指定进行值匹配的连接列,查询只是返问两个表中所有可能的行组合,而不需要考虑列值的匹配。使用交义连接会生成所谓的笛卡尔积,产生大量的行。

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2 
ON table_name1.column_name=table_name2.column_name
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我们来通过实际的例子来说明全连接(FULL JOIN)和交叉连接(CROSS JOIN)之间的区别。 假设有两个表:表A和表B,它们的结构如下: **表A**: ``` +----+--------+ | ID | Name | +----+--------+ | 1 | Alice | | 2 | Bob | | 3 | Charlie| +----+--------+ ``` **表B**: ``` +----+-------+ | ID | Score | +----+-------+ | 1 | 85 | | 3 | 92 | | 4 | 78 | +----+-------+ ``` 现在我们想要获取两个表的笛卡尔积和匹配的行。 **交叉连接(CROSS JOIN)**: ```sql SELECT * FROM tableA CROSS JOIN tableB; ``` 结果: ``` +----+--------+----+-------+ | ID | Name | ID | Score | +----+--------+----+-------+ | 1 | Alice | 1 | 85 | | 1 | Alice | 3 | 92 | | 1 | Alice | 4 | 78 | | 2 | Bob | 1 | 85 | | 2 | Bob | 3 | 92 | | 2 | Bob | 4 | 78 | | 3 | Charlie| 1 | 85 | | 3 | Charlie| 3 | 92 | | 3 | Charlie| 4 | 78 | +----+--------+----+-------+ ``` 交叉连接返回了表A和表B中所有可能的组合,生成了一个包含所有行的结果集。 **全连接(FULL JOIN)**: ```sql SELECT * FROM tableA FULL JOIN tableB ON tableA.ID = tableB.ID; ``` 结果: ``` +----+--------+----+-------+ | ID | Name | ID | Score | +----+--------+----+-------+ | 1 | Alice | 1 | 85 | | 2 | Bob | NULL| NULL | | 3 | Charlie| 3 | 92 | | NULL| NULL | 4 | 78 | +----+--------+----+-------+ ``` 全连接返回了表A和表B中所有匹配和不匹配的行,并将它们合并在一起。如果某一行在一个表中有匹配项而在另一个表中没有,则会用NULL值填充。在这个例子中,ID为2的Bob在表B中没有匹配项,ID为4的行在表A中没有匹配项,因此对应的列用NULL填充。 总结: - 交叉连接返回了两个表的笛卡尔积,没有匹配条件。 - 全连接返回了两个表的匹配和不匹配的行,并将它们合并在一起,需要使用ON子句来指定连接条件。 希望以上例子能够清晰地展示全连接和交叉连接之间的区别。如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值