请看下面的语句
注意比较06 和07的显示结果,自己测试的 语法没有错误
-- left join , right join ,inner join 实验
CREATE DATABASE if NOT EXISTS join_test;
use join_test;
DROP TABLE If EXISTS tbl_a;
create table tbl_a (
id int(11) auto_increment primary key,
name varchar(255),
email varchar(255)
);
DROP TABLE If EXISTS `tbl_b`;
create table `tbl_b`(
`id` int(11) auto_increment primary key,
`name` varchar(255),
`email` varchar(255)
);
use join_test;
-- inset into tbl_a
insert into tbl_a values(1,'a_name_001','a_email_001');
insert into tbl_a values(2,'a_name_002','a_email_002');
insert into tbl_a values(3,'a_name_003','a_email_003');
insert into tbl_a values(4,'a_name_004','a_email_004');
insert into tbl_a values(5,'a_name_005','a_email_005');
insert into tbl_a values(7,'a_name_007','a_email_007');
-- insert into tbl_b
insert into tbl_b values(1,'b_name_001','b_email_001');
insert into tbl_b values(2,'b_name_002','b_email_002');
insert into tbl_b values(3,'b_name_003','b_email_003');
insert into tbl_b values(4,'b_name_004','b_email_004');
insert into tbl_b values(5,'b_name_005','b_email_005');
insert into tbl_b values(6,'b_name_006','b_email_006');
-- left join
select * from tbl_a left join tbl_b on tbl_a.id=tbl_b.id;
查询结果:
1
a_name_001 |
a_email_001 |
1
b_name_001 |
b_email_001 |
2
a_name_002 |
a_email_002 |
2
b_name_002 |
b_email_002 |
3
a_name_003 |
a_email_003 |
3
b_name_003 |
b_email_003 |
4
a_name_004 |
a_email_004 |
4
b_name_004 |
b_email_004 |
5
a_name_005 |
a_email_005 |
5
b_name_005 |
b_email_005 |
7
a_name_007 |
a_email_007 |
|
|
-- right join
select * from tbl_a right join tbl_b on tbl_a.id=tbl_b.id;
查询结果:
1
a_name_001 |
a_email_001 |
1
b_name_001 |
b_email_001 |
2
a_name_002 |
a_email_002 |
2
b_name_002 |
b_email_002 |
3
a_name_003 |
a_email_003 |
3
b_name_003 |
b_email_003 |
4
a_name_004 |
a_email_004 |
4
b_name_004 |
b_email_004 |
5
a_name_005 |
a_email_005 |
5
b_name_005 |
b_email_005 |
|
|
6
b_name_006 |
b_email_006 |
-- inner join
select * from tbl_a inner join tbl_b on tbl_a.id=tbl_b.id
查询结果:
1
a_name_001 |
a_email_001 |
1
b_name_001 |
b_email_001 |
2
a_name_002 |
a_email_002 |
2
b_name_002 |
b_email_002 |
3
a_name_003 |
a_email_003 |
3
b_name_003 |
b_email_003 |
4
a_name_004 |
a_email_004 |
4
b_name_004 |
b_email_004 |
5
a_name_005 |
a_email_005 |
5
b_name_005 |
b_email_005 |
分享到:
相关推荐
本篇文章将深入探讨四种基本的JOIN类型:LEFT JOIN(左连接)、RIGHT JOIN(右连接)、INNER JOIN(内连接)以及OUTER JOIN(外连接)。我们将详细解释这些概念,它们的工作原理以及在实际数据库操作中的应用。 1. ...
Mysql 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...
在这个超详细的分析中,我们将深入探讨LEFT JOIN、RIGHT JOIN以及INNER JOIN的用法。 1. LEFT JOIN(左连接) LEFT JOIN返回所有左表(在本例中为表A)的记录,即使在右表(表B)中没有匹配的记录。如果右表中没有...
本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...
1. 选择正确的JOIN类型:LEFT JOIN、RIGHT JOIN和INNER JOIN各有适用场景,根据需求选择最合适的。 2. 避免全表扫描:通过索引优化,减少JOIN过程中的全表扫描。 3. 使用索引:为JOIN条件创建索引,可以大大提高JOIN...
基本的Join类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等。 INNER JOIN仅返回两个表中匹配的记录,而LEFT JOIN、RIGHT JOIN和FULL JOIN分别返回左表、右表以及两个表中所有的记录,即使某些记录在另一表...
在多表查询时,如果连接条件影响到连接的结果,必须将它们放在`ON`后面,以确保`LEFT JOIN`或`RIGHT JOIN`的正确行为。对于不影响连接的条件,放在`ON`或`WHERE`后面都可以,但这不会改变连接类型的效果。 总结一下...
1 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN(MySQL 不支持)、CROSS JOIN 这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join ...
接下来,我们讨论OUTER JOIN,它分为LEFT JOIN、RIGHT JOIN和FULL JOIN。OUTER JOIN的目的是返回所有匹配的行以及至少一方表中的非匹配行。 - LEFT JOIN(或LEFT OUTER JOIN)返回左表中的所有行,即使右表中没有...
在MySQL中,主要的Join方法包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN、SELF JOIN以及CROSS JOIN等。 INNER JOIN(内连接):是所有Join中最常见的类型。使用INNER JOIN后,只有两个表中能够相互匹配的记录...
在 MySQL 中,JOIN 连接可以分为三种类型:LEFT JOIN、RIGHT JOIN 和 INNER JOIN。 * LEFT JOIN:左连接,将驱动表 R 中的每一条记录与被驱动表 S 中的每一条记录进行连接。 * RIGHT JOIN:右连接,将被驱动表 S 中...
[MySQL][關聯式資料庫][DB]_語法教學#20._用_inner,_left,_right,_cross_join_聯集
3. **右外联接(RIGHT JOIN 或 RIGHT OUTER JOIN)**:右外联接与左外联接相反,返回右表的所有行,即使在左表中没有匹配的行。对于右表中那些在左表中没有匹配的行,结果集中相应左表的字段将填充为NULL。 4. **全外...
在MySQL中,CROSS JOIN等同于INNER JOIN,但标准SQL中两者有区别。 使用JOIN而不是逗号(,)进行表连接的主要原因是效率。使用逗号连接的表会先生成一个巨大的笛卡尔积,然后再通过WHERE子句筛选结果,这可能导致...
3. **使用适当的JOIN类型**:根据业务需求,有时候`INNER JOIN`或`RIGHT JOIN`可能比`LEFT JOIN`更合适。 4. **合理使用子查询**:虽然应尽量避免,但在某些情况下,子查询可能是必要的。在这种情况下,尝试将子查询...