MYSQL开发技巧

a表取经四人组          b表悟空的兄弟
a表         b表


1.Join操作的类型–Inner Join
    內连接Inner join 基于连接谓词将两张表(如A和B)的列组合在一起,产生新的结果表。
     产生的结果集如(图一)红色区域
图一

例如:同时存在与取经四人组中的和悟空的兄弟表中的记录为:

SELECT a.user_name,a.over,b.over FROM a inner JOIN b ON a.user_name=b.user_name 

这里写图片描述


2.Join操作的类型–Left Outer Join
这里写图片描述

SELECT a.user_name,a.over,b.over FROM a LEFT JOIN  b ON a.user_name=b.user_name;

这里写图片描述
例:查询取经四人组中哪些不是孙悟空的兄弟

SELECT a.user_name,a.over,b.over FROM a LEFT JOIN b ON a.user_name=b.user_name WHERE b.user_name  is  NULL;

这里写图片描述

3.Join操作的类型–Right Outer Join
这里写图片描述

SELECT b.user_name,b.over,a.over FROM a RIGHT JOIN b ON a.user_name=b.user_name ;

这里写图片描述
例如:悟空的结拜兄弟中哪些没有去取经

SELECT b.user_name,b.over,a.over FROM a RIGHT JOIN b ON a.user_name=b.user_name WHERE a.user_name IS NULL;

这里写图片描述

4.Join操作的类型–Full Join
这里写图片描述

SELECT b.'user_name',b.'over',a.'over' FROM a FULL JOIN b ON a.'user_name'=b.'user_name'

在MYSQL中执行会报错,MYSQL**不支持Full Join** 通过UNION ALL实现。

SELECT a.user_name,a.over,b.over FROM a LEFT JOIN b ON a.user_name=b.user_name 
UNION ALL 
SELECT b.user_name,b.over,a.over FROM a RIGHT JOIN b ON a.user_name=b.user_name

这里写图片描述

5.Join操作的类型–Corss Join 交叉查询得到的结果为两个表的记录相乘的结果集 笛卡尔基

SELECT a.user_name,a.over,b.user_name,b.over FROM a CROSS JOIN b

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值