mysql 连接(cross join | inner join | left join | right join | full join)

本文详细介绍了数据库中的四种连接方式:交叉连接(笛卡尔积)、内连接(包括隐式和显示)、左外连接、右外连接以及全连接。通过实例展示了各种连接在SQL查询中的应用,帮助读者理解如何根据需求选择合适的连接类型。此外,还提到了MySQL中全连接的实现方法,即通过UNION ALL操作来达到类似效果。
摘要由CSDN通过智能技术生成
交叉连接(cross join)

交叉联接返回两个表的所有行组合,交叉联接也称作笛卡尔积。

SELECT
	*
FROM
	table_1 
CROSS JOIN table_2
内连接(inner join)

两个表的所有组合中,返回满足关联条件的结果集。如果没有跟关联条件,返回结果和交叉连接相同。

隐式内连接:
SELECT
	*
FROM
	table_1 A,
	table_2 B
WHERE
	A.id = B.xid

显示内连接:
SELECT
	*
FROM
	table_1  A 
INNER JOIN table_2 B ON A.id = B.xid
外连接
  • 左外连接(left join)
    除了显示符合连接条件的结果,左表中不满足条件的数据行也会显示(右表字段均为NULL)。
SELECT
	*
FROM
	table_1  A 
LEFT JOIN table_2 B ON A.id = B.xid

如果只显示左连接不满足条件的数据行

SELECT
  *
FROM
  table_1  A 
LEFT JOIN table_2 B ON A.id = B.xid
WHERE B.xid IS NULL
  • 右外连接(right join)
    除了显示符合连接条件的结果,右表中不满足条件的数据行也会显示(左表表字段均为NULL)。
SELECT
   *
FROM
   table_1  A 
RIGHT JOIN table_2 B ON A.id = B.xid

如果只显示左连接不满足条件的数据行

 SELECT
   *
FROM
   table_1  A 
RIGHT JOIN table_2 B ON A.id = B.xid
WHERE A.id IS NULL
  • 全连接(full join)
    显示符合连接条件的结果,同时显示左右不符合条件的数据行,相应的左右表字段为NULL。
    mysql不支持full join用法,可使用union [all] 实现,当使用 union 时,mysql会把结果集中重复的记录删掉,uniall会把所有的记录返回,效率高于 union 。
SELECT
   *
FROM
   table_1 A
LEFT JOIN table_2 B ON ON A.id = B.xid
UNION ALL
   SELECT
   	*
   FROM
   	table_2 B
   RIGHT JOIN table_1 A ON A.id = B.xid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值