mysql 的 join
------
基本格式:
select ... from A
join B1 on ...
join B2 on ...
...
where ...
------
join 类型
join 内连接
left join 左连接,左表所有数据查出,右表跟左表有关联的数据才查出
right join 右连接,右表所有数据查出,左表跟右表有关联的数据才查出
inner join 内连接,同 join,
全连接 mysql 不支持全连接,可以通过 union 2个 left join 或 right join 实现全连接,
= 如果不用 join 语句,直接用 = 号关联,则相当于 内连接,
------
例子:
* 建表:
-- create table boy & gril
create table boy(
id int(10) primary key auto_increment,
name varchar(50) not null,
girl_id int null,
cdate timestamp default current_timestamp
)
engine=innodb default charset=utf8;
create table girl(
id int(10) primary key auto_increment,
name varchar(50) not null,
boy_id int null,
cdate timestamp default current_timestamp
)
engine=innodb default charset=utf8;
* 插入测试数据:
-- clear table
truncate table boy;
truncate table girl;
-- init data
insert into boy(name,girl_id) values
('boy_01',2),
('boy_02',5),
('boy_03',1),
('boy_04',4),
('boy_05',3),
('boy_06',100);
insert into girl(name,boy_id) values
('girl_1',3),
('girl_2',1),
('girl_3',5),
('girl_4',4),
('girl_5',2),
('girl_6',100);
* 各种 join 的 sql 语句:
-- 内连接
select b.id as boy_id, g.id as girl_id from boy b join girl g on b.girl_id = g.id order by b.id asc;
-- 用 = 关联,相当于 内连接
select b.id as boy_id, g.id as girl_id from boy b, girl g where b.girl_id = g.id order by b.id asc;
-- 左连接
select b.id as boy_id, g.id as girl_id from boy b left join girl g on b.girl_id = g.id order by b.id asc;
-- 右连接
select b.id as boy_id, g.id as girl_id from boy b right join girl g on b.girl_id = g.id order by b.id asc;
-- 2个 左连接,通过 union 合并,相当于 全连接
select b.id as boy_id, g.id as girl_id from boy b left join girl g on b.girl_id = g.id
union
select b.id as boy_id, g.id as girl_id from girl g left join boy b on g.boy_id = b.id
------
分享到:
相关推荐
MySQL数据库中Join操作的使用及优化是一项重要的技能,它涉及到数据库中表与表之间的关联查询。在执行Join操作时,数据库管理系统需要按照某种算法将多个表中的数据记录联合起来,并返回查询结果。Join操作的主要...
MySQL JOIN是数据库操作中用于合并多个表的数据的关键技术,尤其在处理复杂的数据关系时显得尤为重要。在优化数据库性能,特别是涉及多表连接查询时,理解JOIN的完全用法至关重要。 首先,JOIN操作主要分为三类:...
本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...
"MySQL JOIN 工作原理浅析" MySQL JOIN 工作原理浅析是数据库管理系统中的一种关键技术,用于将多个表连接起来以获取所需数据。本文将对 MySQL 中的 JOIN 工作原理进行浅析,包括 Nested Loop Join 和 Hash Join ...
在MySQL中,主要的Join方法包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN、SELF JOIN以及CROSS JOIN等。 INNER JOIN(内连接):是所有Join中最常见的类型。使用INNER JOIN后,只有两个表中能够相互匹配的记录...
当我们需要从两个或更多个表中联合检索数据时,MySQL的JOIN操作就显得尤为重要。本篇文章将深入探讨如何利用JOIN,嵌套查询,LIKE运算符以及聚合函数来处理复杂的数据库查询。 1. **JOIN操作**: JOIN是SQL中用于...
MySQL中的JOIN操作是数据库查询中不可或缺的部分,它用于在多个表之间建立关联,获取符合特定条件的数据。在本文中,我们将深入理解JOIN语法,并探讨如何进行性能优化。 首先,JOIN的基本语法涉及FROM子句后的两个...
MySQL中的JOIN操作是数据库查询中常用的一种方式,用于合并两个或更多表的数据。JOIN的关键在于找到不同表之间的关联条件,以此来组合出所需的结果。在本实例中,我们讨论了LEFT JOIN及其与ID自增的关系。 LEFT ...
MySQL提供了多种JOIN类型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN等,来满足不同的查询需求。 本章节主要讲解了在MySQL中使用JOIN进行多表查询的方法,特别是LEFT JOIN和JOIN(通常指的是INNER ...
1 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN(MySQL 不支持)、CROSS JOIN 这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join ...
MySQL中的Nested-Loop Join(NLJ)是一种基本的JOIN操作实现方式,主要用于处理两个或多个表之间的连接。NLJ的基本思想是逐行遍历一张表(称为外部表),然后对每一行与另一张表(称为内部表)进行匹配。这个过程...
在MySQL查询语句过程和EXPLAIN语句基本概念及其优化中介绍了EXPLAIN语句,并举了一个慢查询例子: 可以看到上述的查询需要检查1万多记录,并且使用了临时表和filesort排序,这样的查询在用户数快速增长后将成为噩梦...
MySQL中的JOIN语句是数据库操作中的重要组成部分,它允许我们基于两个或更多表之间的关联字段来合并数据。本文将深入探讨JOIN的基本使用方法以及字段字符集编码如何影响性能。 JOIN语句的基础在于它能根据两个表中...