摘要: 下面简答介绍下MySQL中常用的JOIN操作,以及会犯得一些简单错误
下面简答介绍下MySQL中常用的JOIN操作,以及会犯得一些简单错误
tips:图是引用网络,如果错误,请指出,感谢。
在MySQL中,逗号(','), JOIN, CROSS JOIN, INNER JOIN在语法上是等价的,能够互相替换(在标准SQL中,它们是不等价的)
然而,逗号(',')运算的优先级小于JOIN, CROSS JOIN, INNER JOIN, LEFT JOIN等,
如果混合使用,则会造on列子句中出现"Unknown column 'col_name' "错误
例如:
SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);
ERROR 1054 (42S22): Unknown column 't1.i1' in 'on clause'
因为该语句被解析成了:
SELECT * FROM t1, (t2 join t3 on (t1.i1 = t3.i3));
表达式在on和where后的区别
如:
on A.ID = B.ID and B.ID<3:
先筛选出B表ID小于3的结果,在进行JOIN操作
on A.ID = B.ID where B.ID<3:
先进行JOIN操作,在对结果集筛选出B.ID小于3的结果
在inner join中,两者结果没有区别:
如:
select A.ID as AID, B.ID as BID from A join B on A.ID = B.ID and B.ID<3;
select A.ID as AID, B.ID as BID from A join B on A.ID = B.ID where B.ID<3;
输出结果:
+-----+-----+
| AID | BID |
+-----+-----+
| 1 | 1 |
| 2 | 2 |
+-----+-----+
2 rows in set (0.00 sec)
在left join中,两者结果有区别:
select A.ID as AID, B.ID as BID from A left join B on A.ID = B.ID and B.ID<3;
输出结果:
+-----+------+
| AID | BID |
+-----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | NULL |
| 4 | NULL |
| 5 | NULL |
| 6 | NULL |
+-----+------+
select A.ID as AID, B.ID as BID from A left join B on A.ID = B.ID where B.ID<3 ;
输出结果:
+-----+------+
| AID | BID |
+-----+------+
| 1 | 1 |
| 2 | 2 |
+-----+------+
JOIN图示:
inner join(内连接):
将A表和B表中存在连接关系的字段,组成的结果集(A表和B表的交集)
关系表示如图:
AT7kAxKuGZFtAAAAAElFTkSuQmCC
例句:
select * from a inner join b on a.id=b.id;
0G6pawHcetAAAAAASUVORK5CYII=
===========================
left join(左连接,属于外连接):
以左表为准,去右表找数据,如果没有匹配的数据,则以null补位右表的数据,所以输出结果数为左表原数据集(right join同理)
关系表示如图:
wGHc92G+p4zIQAAAABJRU5ErkJggg==
例句:
select * from a left join b on a.id=b.id;
gAAAABJRU5ErkJggg==
查找A表中有而且B表中没有的集合,表示为图:
H8INsroPnXo0AAAAAElFTkSuQmCC
语句为:
select * from a left join b on a.id=b.id where b.id is null;
P84Gs7CsEEdQwAAAABJRU5ErkJggg==
查找A表中有而且B表中也有的集合,表示为图:
AT7kAxKuGZFtAAAAAElFTkSuQmCC
因此left join可以转换为 inner join
语句为:
select * from a left join b on a.id=b.id where b.id is not null;
ygAAAAASUVORK5CYII=
版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
分享到:
相关推荐
MySQL数据库中Join操作的使用及优化是一项重要的技能,它涉及到数据库中表与表之间的关联查询。在执行Join操作时,数据库管理系统需要按照某种算法将多个表中的数据记录联合起来,并返回查询结果。Join操作的主要...
本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...
MySQL中的Nested-Loop Join(NLJ)是一种基本的JOIN操作实现方式,主要用于处理两个或多个表之间的连接。NLJ的基本思想是逐行遍历一张表(称为外部表),然后对每一行与另一张表(称为内部表)进行匹配。这个过程...
以下是一个使用MySQL JOIN操作的实例: ```sql SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author; ``` 这个查询返回了runoob_tbl...
首先,JOIN操作主要分为三类:内联接(INNER JOIN)、外联接(OUTER JOIN)以及全外联接(FULL OUTER JOIN)。 1. **内联接(INNER JOIN)**:内联接返回的是两个表中匹配的行。如果某个表的某行在另一个表中找不到匹配的行...
Equi-join(等值连接):等值连接是基于等号(=)操作符的连接条件,用于连接两个表的指定字段。上述内容中,Equi-join写法是:SELECT * FROM employee_table a, issue b WHERE a.id = b.id。这里的连接条件a.id = b...
#### 十一、MySQL JOIN操作优化技巧 优化JOIN操作的方法包括: - **确保连接字段有索引**:提高连接操作的速度。 - **减少返回的数据量**:使用LIMIT限制结果集大小。 - **避免在JOIN条件中使用函数或表达式**:...
MySQL中的JOIN操作是数据库查询中不可或缺的部分,它用于合并来自两个或更多表的数据。JOIN的主要类型包括内联结(INNER JOIN)、外联结(OUTER JOIN),其中外联结又分为外左联结(LEFT JOIN)和外右联结(RIGHT ...
MYSQL 查询操作教程 MYSQL 查询操作教程是 MYSQL 数据库管理系统中的一种基本操作,用于从数据库中检索和操作数据。本教程将详细介绍 MYSQL 查询操作的基本语法和实例操作。 一、单表选择 MYSQL 查询操作的基本...
Mysql 中的连接查询是指从两个或多个表中检索数据的操作。其中,inner join、left join 和 right join 是三种最常用的连接查询方式。本文将详细解释这三种连接查询的原理、语法和应用。 一、inner join(等值连接)...
六、JOIN操作 - 内连接(INNER JOIN):只返回两个表中存在匹配的记录。 - 左连接(LEFT JOIN):返回左表的所有记录,即使右表没有匹配的记录。 - 右连接(RIGHT JOIN):返回右表的所有记录,即使左表没有匹配的...
当我们需要从两个或更多个表中联合检索数据时,MySQL的JOIN操作就显得尤为重要。本篇文章将深入探讨如何利用JOIN,嵌套查询,LIKE运算符以及聚合函数来处理复杂的数据库查询。 1. **JOIN操作**: JOIN是SQL中用于...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行数据操作。在本文中,我们将深入探讨MySQL中的基本数据库操作,包括“增”(添加数据)、“删”(删除数据)、“改”...
MySQL 数据查询操作实验训练 2 本实验训练涵盖了 MySQL 数据查询操作的多个方面,包括单表查询、多条件查询、聚合函数查询、内连接查询、外连接查询、复合查询等。通过对实验内容的分析,可以总结出以下知识点: 1...
MySQL中的JOIN操作是数据库查询中不可或缺的部分,它用于在多个表之间建立关联,获取符合特定条件的数据。在本文中,我们将深入理解JOIN语法,并探讨如何进行性能优化。 首先,JOIN的基本语法涉及FROM子句后的两个...
MySQL中的JOIN操作是数据库查询中常用的一种方式,用于合并两个或更多表的数据。JOIN的关键在于找到不同表之间的关联条件,以此来组合出所需的结果。在本实例中,我们讨论了LEFT JOIN及其与ID自增的关系。 LEFT ...
MySQL是世界上最流行的关系型数据库管理系统之一,用于存储和管理数据。...在实际应用中,根据具体需求,可能还需要学习更多复杂的SQL语句,如JOIN操作、索引创建、触发器、存储过程等,以便更高效地管理数据。