Mysql之我见三(join查询)

1.Sql解析

2.常见join查询
SELECT * FROM staff;

SELECT * FROM department;

(1)内链接(通俗的说就是取2张表的公共部分)

select <slect_list> from TableA A inner join TableB B on A.Key=B.Key;
SELECT * FROM staff a INNER JOIN department b ON a.`depart_id`=b.`id`;
等价于
SELECT * FROM staff a , department b WHERE a.`depart_id`=b.`id`;

(2)左连接(取a表的所有的数据,b表相关联字段没有数据就取null)

select <slect_list> from TableA A left join TableB B on A.Key=B.Key;
SELECT * FROM staff a LEFT JOIN department b ON a.`depart_id`=b.`id`;

(3)右连接(取b表的所有的数据,b表相关联字段没有数据就取null)

select <slect_list> from TableA A right join TableB B on A.Key=B.Key;
SELECT * FROM staff a RIGHT JOIN department b ON a.`depart_id`=b.`id`;

(4)左连接(取a表的所特有的数据,把b表中null的数据去掉)

select <slect_list> from TableA A left join TableB B on A.Key=B.Key where B.Key is null;
SELECT * FROM staff a LEFT JOIN department b ON a.`depart_id`=b.`id` WHERE b.id IS NULL;

(5)右连接(取b表所特有的数据,a表相关联字段没有数据就取null)

select <slect_list> from TableA A right join TableB B on A.Key=B.Key where A.Key is null;
SELECT * FROM staff a RIGHT JOIN department b ON a.`depart_id`=b.`id` WHERE a.`depart_id` IS NULL;

(6)全连接(a表和b表中所有的数据)

select <slect_list> from TableA A full out join TableB B on A.Key=B.Key; (mysql5.5)
SELECT * FROM staff a LEFT JOIN department b ON a.`depart_id`=b.`id`
UNION
SELECT * FROM staff a RIGHT JOIN department b ON a.`depart_id`=b.`id`;

(7)表a所特有union表b所特有的

select <slect_list> from TableA A full out join TableB B on A.Key=B.Key where A.Key is null or B.Key is null;(mysql5.5)
等价
select <slect_list> from TableA A left join TableB B on A.Key=B.Key where B.Key is null
union
select <slect_list> from TableA A right join TableB B on A.Key=B.Key where A.Key is null;



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值