MySql连接查询


 

a表:

person_idpersion_name
1aa
2bb
3cc

b表:

job_idjob_nameparent_id
1111
2222
3334

1) 内连接(join=inner join)

显示连接:

SELECT a.*,b.* FROM a INNER JOIN b ON a.persion_id=b.persion_id

隐式连接:

SELECT a.*,b.* FROM a,b WHERE a.persion_id=b.persion_id

结果集:

persion_idpersion_namejob_idjob_namepersion_id1
1aa1111
2bb2222

2) 左连接(left join=left outer join)

SELECT a.*,b.* FROM a LEFT JOIN b ON a.persion_id=b.persion_id

 结果集:

persion_idpersion_namejob_idjob_namepersion_id1
1aa1111
2bb2222
3ccnullnullnull

3) 右连接(right join=right outer join)

SELECT a.*,b.* FROM a RIGHT JOIN b ON a.persion_id=b.persion_id

 结果集:

persion_idpersion_namejob_idjob_namepersion_id1
1aa1111
2bb2222
nullnull3334

4) 交叉连接

SELECT a.*,b.* FROM a,b

 或者

SELECT a.*,b.* FROM a CROSS JOIN b

  结果集:(3X3=9条记录)

persion_idpersion_namejob_idjob_namepersion_id1
1aa1111
2bb1111

cc1111
1aa2222
2bb2222
...........................

5) 完全连接(MySql不支持FULL JOIN)

SELECT a.*,b.* FROM a FULL JOIN b ON a.persion_id=b.persion_id

 结果集:

persion_idpersion_namejob_idjob_namepersion_id1
1aa1111
2bb2222
nullnull3334
3ccnullnullnull

MySQL Full Join的实现 因为MySQL不支持FULL JOIN,下面是替代方法

left join + union(可去除重复数据)+ right join

两张表时:

select * from A left join B on A.id = B.id (where 条件)

union 

select * from A right join B on A.id = B.id (where条件);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值