`
rocky225
  • 浏览: 11417 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

MySql的Join使用

 
阅读更多

数据

<style> <!-- table, tr, td {border:dotted 1px #ccc} --> </style>
class表:
ID class_name
1 class 1
2 class 2
3 class 3
4 class 4
5 class 5

students表:
ID student_name age class_id
1 tom 18 1
2 jack 19 1
3 Lucy 18 2
4 Ely 19 3
5 Jon 20 4
6 Messi 19 3
7 Cl 20 3
8 UK 22 6

Join与Inner Join

Join是Inner Join的简写,只有当俩表中都存在的时候才会select
select s.id,s.student_name,s.age,c.class_name,c.id from students s 
join class c on s.class_id=c.id order by s.id;
id student_name age class_name id
1 tom 18 class 1 1
2 jack 19 class 1 1
3 Lucy 18 class 2 2
4 Ely 19 class 3 3
5 Jon 20 class 4 4
6 Messi 19 class 3 3
7 Cl 20 class 3 3
由于没有student属于class 5和没有class 6,因此UK和class 5并不会被select

Left Join

select s.id,s.student_name,s.age,c.class_name,c.id from students s 
left join class c on s.class_id=c.id order by s.id;
id student_name age class_name id
1 tom 18 class 1 1
2 jack 19 class 1 1
3 Lucy 18 class 2 2
4 Ely 19 class 3 3
5 Jon 20 class 4 4
6 Messi 19 class 3 3
7 Cl 20 class 3 3
8 UK 22 NULL NULL
以students表为基准,当class表没有匹配的就为NULL
select c.id,c.class_name,s.id,s.student_name,s.age from class c 
left join students s on c.id=s.class_id order by c.id;
id class_name id student_name age
1 class 1 2 jack 19
1 class 1 1 tom 18
2 class 2 3 Lucy 18
3 class 3 4 Ely 19
3 class 3 6 Messi 19
3 class 3 7 Cl 20
4 class 4 5 Jon 20
5 class 5 NULL NULL NULL

Right Join

select s.id,s.student_name,s.age,c.class_name,c.id from students s 
right join class c on s.class_id=c.id order by c.id;
id student_name age class_name id
2 jack 19 class 1 1
1 tom 18 class 1 1
3 Lucy 18 class 2 2
4 Ely 19 class 3 3
6 Messi 19 class 3 3
7 Cl 20 class 3 3
5 Jon 20 class 4 4
NULL NULL NULL class 5 5
select c.id,c.class_name,s.id,s.student_name,s.age from class c 
right join students s on c.id=s.class_id order by s.id;







id class_name id student_name age
1 class 1 1 tom 18
1 class 1 2 jack 19
2 class 2 3 Lucy 18
3 class 3 4 Ely 19
4 class 4 5 Jon 20
3 class 3 6 Messi 19
3 class 3 7 Cl 20
NULL NULL 8 UK 22

Full Join

Mysql中并不支持Full Join,但我们可以通过以下方法实现Full Join的功能
select s.id,s.student_name,s.age,c.class_name,c.id from students s 
left join class c on s.class_id=c.id
union
select s.id,s.student_name,s.age,c.class_name,c.id from students s 
right join class c on s.class_id=c.id;
id student_name age class_name id
1 tom 18 class 1 1
2 jack 19 class 1 1
3 Lucy 18 class 2 2
4 Ely 19 class 3 3
5 Jon 20 class 4 4
6 Messi 19 class 3 3
7 Cl 20 class 3 3
8 UK 22 NULL NULL
NULL NULL NULL class 5 5


分享到:
评论

相关推荐

    mysql Join使用以及优化

    MySQL数据库中Join操作的使用及优化是一项重要的技能,它涉及到数据库中表与表之间的关联查询。在执行Join操作时,数据库管理系统需要按照某种算法将多个表中的数据记录联合起来,并返回查询结果。Join操作的主要...

    MySQL JOIN 语法说明与 INNER JOIN 语法用法实例.docx

    6. MySQL 没有提供 SQL 标准中的 FULL JOIN(全连接),可以使用 UNION 关键字来合并 LEFT JOIN 与 RIGHT JOIN,达到模拟 FULL JOIN 的目的。 7. CROSS JOIN 是一种特殊的 JOIN 类型,在不指定 ON 条件下,CROSS ...

    MySQL中Nested-Loop Join算法小结

    MySQL中的Nested-Loop Join(NLJ)是一种基本的JOIN操作实现方式,主要用于处理两个或多个表之间的连接。NLJ的基本思想是逐行遍历一张表(称为外部表),然后对每一行与另一张表(称为内部表)进行匹配。这个过程...

    MySQL JOIN之完全用法

    MySQL JOIN是数据库操作中用于合并多个表的数据的关键技术,尤其在处理复杂的数据关系时显得尤为重要。在优化数据库性能,特别是涉及多表连接查询时,理解JOIN的完全用法至关重要。 首先,JOIN操作主要分为三类:...

    mysql join所有方法总结

    本文将详细介绍MySQL中Join的使用方法,以实现不同表之间的数据关联查询。在数据库查询中,Join是非常重要的功能,它允许用户根据一定的条件将两个或多个表中的数据联合起来展示。在MySQL中,主要的Join方法包括...

    MySQL JOIN 工作原理浅析1

    "MySQL JOIN 工作原理浅析" MySQL JOIN 工作原理浅析是数据库管理系统中的一种关键技术,用于将多个表连接起来以获取所需数据。本文将对 MySQL 中的 JOIN 工作原理进行浅析,包括 Nested Loop Join 和 Hash Join ...

    MySQL中视图的使用及多表INNER JOIN的技巧分享

    这里使用了3表关联,对于多表关联的 INNER JOIN 写法有一个技巧 1. 先写最简单的2表关联 INNER JOIN 2. 然后使用 () 从 FROM 之后到语句结尾全部扩起来 3. 在语句结尾开始连接与下一个表的 INNER JOIN 记住这个原则...

    MySql MySql使用方法 Mysql例子

    MySQL是世界上最流行的开源关系型数据库管理系统之一,以其高效、稳定和易于使用的特点赢得了广大开发者和企业的青睐。在本文中,我们将深入探讨MySQL的使用方法,通过具体的例子来帮助你理解和掌握其核心概念。 1....

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    Mysql 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...

    mysql join

    mysql join实例,包括建表语句,join查询

    mysql中文使用手册

    在SQL语法部分,手册会详细讲解如何使用SQL语言来操作MySQL,包括数据的增删改查(CRUD)操作,以及更复杂的查询语句如JOIN、子查询、聚合函数和排序。这部分内容对于日常的数据管理至关重要。 事务处理和并发控制...

    了解复杂MySQL JOIN

    在数据库管理领域,MySQL是一种广泛使用的开源关系型数据库管理系统,其功能强大且高效。当我们需要从两个或更多个表中联合检索数据时,MySQL的JOIN操作就显得尤为重要。本篇文章将深入探讨如何利用JOIN,嵌套查询,...

    mysql使用GROUP BY分组实现取前N条记录的方法

    本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...

    深入理解mysql之left join 使用详解

    关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。 如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 ...

    MySql5.0使用手册

    MySQL 5.0是世界上最流行的开源关系型数据库管理系统之一,其功能强大且易于使用,尤其在Web应用程序开发中被广泛采用。本使用手册将详细解析MySQL 5.0的各项核心功能,帮助用户从安装配置到实际操作,全面掌握MySQL...

    Mysql中Join的使用实例详解

    本章节我们将向大家介绍如何使用MySQL 的 JOIN 在两个或多个表中查询数据。对mysql中的join感兴趣的朋友一起学习吧

    MySQL中join语句的基本使用教程及其字段对性能的影响

    在MySQL中,JOIN通常与ON关键字一起使用,其基本语法如下: ```sql FROM table1 [INNER | LEFT | RIGHT] JOIN table2 ON condition ``` 这里,`table1`和`table2`分别代表左表和右表,`condition`是定义匹配条件的...

Global site tag (gtag.js) - Google Analytics