join连接 cross join inner join outer join

Join 系列

CROSS JOIN

笛卡尔积连接 :当CROSS JOIN不使用WHERE子句时,CROSS JOIN产生了一个结果集,该结果集是两个关联表的行的乘积。(table1 m行,table2 n行;CROSS JOIN后有m*n行)

SELECT * 
FROM t1 CROSS JOIN t2;

在CROSS JOIN中添加WHERE子句来添加条件。

SELECT * 
FROM t1 CROSS JOIN t2
WHERE t1.id = t2.id;

INNER JOIN

两个表同时符合条件的组合

SELECT * FROM table1 INNER JOIN table2

在INNER JOIN中添加ON子句来添加条件。

SELECT * 
FROM t1 INNER JOIN t2
ON t1.id = t2.id;

INNER JOIN和CROSS JOIN的区别:

两者得到的结果一样,但是INNER JOIN的效率更高。

OUTER JOIN

符合连接条件的行和左表(LEFT JOIN), 右表(RIGHT JOIN)或者两个表(FULL JOIN)的所有数据行

1. LEFT JOIN

显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL。

SELECT * 
FROM t1 LEFT JOIN t2
ON t1.id = t2.id;
2. RIGHT JOIN

显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL。

SELECT * 
FROM t1 RIGHT JOIN t2
ON t1.id = t2.id;
3. FULL JOIN

显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL,即显示左连接、右连接和内连接的并集。

MySQL 中并没有 FULL JOIN 的语法,需要借助 union 关键字来实现.

SELECT * 
FROM t1 LEFT JOIN t2
ON t1.id = t2.id 

UNION

SELECT * 
FROM t1 RIGHT JOIN t2
ON t1.id = t2.id;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值