您的位置:首页 > 数据库 > MySQL

内联,外联,全联结,交叉联结

2015-12-01 11:51 483 查看


内联:(只显示两边同时符合子句条件的条目)
select id,user_name.name,user_info.age,user_info.sex from user_name inner join user_info
on user_name.name = user_info.name;
相当于:
select
id,user_name.name,user_info.age,user_info.sex from user_name  join user_info
on user_name.name = user_info.name;

相当于:
select
id,user_name.name,user_info.age,user_info.sex from user_name, user_info where user_name.name = user_info.name;

即:inner join 可以使用 join 或 "." 来替代(内联语句中的on也可以使用where来替换,但如果是外联的语句不能使用where来替换,但可以在后面添加where 约束)



外联:
左联:(显示左边所有条目,右边没有匹配的则使用null补全)
select
id,user_name.name,user_info.age,user_info.sex from user_name left join user_info
on user_name.name = user_info.name;




右联:(显示右边所有条目,左边没有匹配的则使用null补全)
select id,user_name.name,user_info.age,user_info.sex
from user_name right join user_info on user_name.name = user_info.name;




[b][b]全联结:(相当于左联结和有链接的合集,mysql有些版本不支持)
[/b][/b]

可以使用:
select * from A left join B on A.id=B.id
union 

select * from A right join B on A.id=B.id
替代

[b]交叉联结:(相当于内联去掉限制子句,显示两张表的笛卡尔积)
[/b]

select id,user_name.name,user_info.age,user_info.sex from user_name join user_info;



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Mysql