MySQL 内连接、外连接、左连接、右连接、全连接
CREATE TABLE `a_table` (
`a_id` int(11) DEFAULT NULL,
`a_name` varchar(10) DEFAULT NULL,
`a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf
建表语句:
表测试数据: 一、内连接 关键字:inner join on 语句:select * from a_table a inner join b_table b on a.a_id = b.b_id; 执行结果: 说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。 二、左连接(左外连接) 关键字:left join on / left outer join on 语句:select * from a_table a left join b_table b on a.a_id = b.b_id; 执行结果: 说明: left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来mssql 右连接,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。 三、右连接(右外连接) 关键字:right join on / right outer join on 语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id; 执行结果: 说明: right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。 与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。 四、全连接(全外连接) MySQL目前不支持此种方式,可以用其他方式替代解决。 全外连接:左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充; 也就是: 左外连接=左表全部记录+相关联结果 右外连接=右表全部记录+相关联结果 全外连接=左表全部记录+右表全部记录+相关联结果=左外连接+右外连接-相关联结果(即去重复) 那么在MYSQL中谁可以做到呢? UNION UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。 故实现全外连接可以使用:
注释:以上连接全为等值连接;Oracle中全外连接可以使用full join;请不要弄混。 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |