`
七月先知
  • 浏览: 149832 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql左右连接查询(有示例图)

    博客分类:
  • Java
阅读更多
小小的连接查询,其实里面有很多学问,今天我就来简单剖析一下。
左连接,右连接,内连接的本质:将两个表的数据依据一定条件横向连接起来。

给出建表语句:
--------------------------------------------------
create table test1(
       id int,             
       name varchar(10)
)

create table test2(
       id int,             
       name varchar(10)
)

INSERT INTO `test1` VALUES (1,'2');
INSERT INTO `test1` VALUES (1,'2');
INSERT INTO `test1` VALUES (2,'1');
INSERT INTO `test1` VALUES (2,'2');
INSERT INTO `test1` VALUES (3,'1');

INSERT INTO `test2` VALUES (1,'2');
INSERT INTO `test2` VALUES (2,'1');
INSERT INTO `test2` VALUES (2,'2');
--------------------------------------------------

左连接sql:select * from  test1 a left join test2 b on a.id=b.id
如下为左连接示例图:


1,理解左连接查询方式(以两表id相等作为on的条件):
先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。
举例:select * from  test1 a left join test2 b on a.id=b.id   

说明:先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。
在本例中,我画了6根线,每条线都表示了一条查询结果记录。
当ID为1时:左表有2条ID为1的记录,右表有1条。先查左表的第一条,然后再查询右表中所有ID与左表第一条记录的ID相等(即ID为1)的记录,因右表只有1条记录的ID为1,因此得出查询结果的第一条记录:1,2,1,1。
第二条记录查询方式也同上。
当ID为2时:左右表各有2条ID为2的记录。也是同上,当查左表第一条ID为2的记录时,因右表中有2条ID为2的记录,因此查询结果会有两条,即左表的1条记录会和右表的2条记录一一配对。
第二条记录查询方式也同上。
对于id为3的记录,因右表没有ID为3的记录,因此右边显示为null。

--------------------------------------------------
2,理解了左连接之后,右连接也就不难了。
右连接语句:select * from  test1 a right join test2 b on a.id=b.id 
右连接查询结果:


--------------------------------------------------

3,而内连接,则是把ID只存在于某一个表中的记录给过滤了。
以下3条sql语句等价:
select * from  test1 a  join test2 b on a.id=b.id 
select * from  test1 a inner join test2 b on a.id=b.id 
select * from  test1 a , test2 b where a.id=b.id 
内连接查询结果:


  • 大小: 54.6 KB
  • 大小: 2 KB
  • 大小: 1.9 KB
0
2
分享到:
评论
2 楼 huoyexiangyu 2014-03-28  
[s[color=red]ize=large][align=center]
[flash=200,200][url][img][list]
[*]
引用
[u][b][/b][/u]
[/list][/img][/url][/flash]
[/align][/si      ze][/color]
1 楼 rbible 2014-03-27  
结果集明显是错的

相关推荐

    MySQL连接查询.docx

    本文将深入探讨七种主要的MySQL连接查询类型,并提供每种查询的实现示例。 1. 内连接(INNER JOIN): 内连接返回两个表中匹配的行。在给定的例子中,`INNER JOIN`被用来查找`employees`和`departments`表中`...

    Java连接mysql数据库攻略归类.pdf

    我这里没有修改,使用用默认位置,直接按“Next”继续选择您的网站的一般 mysql 访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20 个左右)”、“Online Transaction Processing(OLTP)(500 个左右)”、...

    mysql的左右内连接用法实例

    MySQL中的左右内连接是数据库操作中的重要概念,用于在多个表之间进行复杂的数据查询。这里我们将深入探讨左连接、右连接以及内连接的用法,通过具体的实例来帮助理解。 一、左连接(Left Join) 左连接以左表(本...

    mysql 常用sql语句整理

    在文档"数据库:左连接、右连接、全连接.doc"中,你可能会找到更多关于这些连接类型的详细解释和示例,这将有助于深化你对这些概念的理解,并能帮助你在实际工作中更有效地利用MySQL进行数据操作。

    无限级分类/多级分类【左右值方式实现】

    你可以导入这个脚本到你的MySQL数据库中,以建立一个示例的分类树。 `index.php`文件可能是用来操作这个分类系统的PHP脚本。其中前几行可能定义了数据库连接的参数,如数据库主机名、用户名、密码和数据库名称,...

    MySql实现跨表查询的方法详解

    在MySQL数据库中,跨表查询是处理多个相关表数据的关键技术。这允许我们从不同的表中获取并结合信息,以满足复杂的数据需求。本篇文章将深入探讨如何在MySQL中实现跨表查询,以及如何利用共享的字段来关联数据。 ...

    MySQL5.6参数说明

    - **功能**:客户端尝试连接失败达到此数值后,MySQL服务会暂时禁止其连接,直至执行`FLUSH HOSTS`命令或重启服务。 - **建议**:合理设置该值以防止恶意连接攻击。 6. **table_open_cache**: - **功能**:...

    MySQLDBA运维笔记.pdf

    1.2.2 mysql 的多实例结构图.........................................................................................10 1.2.3 实战安装 mysql 多实例需要的依赖包..............................................

    mysql服务器安装详解

    ### MySQL服务器安装详解 #### 一、安装准备与文件解压 MySQL是一款广泛使用的开源关系型数据库管理系统。本文档详细介绍了MySQL服务器的安装步骤。首先,下载MySQL安装包`mysql-5.0.22-win32.zip`,然后通过解压...

    MySQL安装图解

    - 示例路径:`F:\Server\MySQL\MySQLServer 5.0`。 ##### 5. 开始安装 - 确认所有设置无误后点击 “Install” 开始安装。 - 安装过程中会提示是否注册mysql.com账户,通常可选择 “Skip Sign-Up”。 #### 二、...

    mysql具体配置

    最后,`MYSQL配置.txt`文件可能是详细的配置指南或者具体的配置示例,它能提供更深入的指导。阅读并理解这些文档,结合实际需求调整配置,可以确保MySQL运行在最佳状态。记住,良好的数据库配置是提升系统性能的关键...

    详解数据库多表连接查询的实现方法

    交叉连接示例: ```sql SELECT * FROM authors AS a CROSS JOIN publishers AS p ``` 需要注意的是,无论哪种连接操作,都不能直接对text、ntext和image等大数据类型列进行连接,但可以通过间接方式实现。在...

    PHP+MYSQL留言板代码.doc

    - **注意**:虽然这个例子有助于初学者理解基本概念,但实际开发中应避免使用已废弃的`mysql_`系列函数,而应使用`mysqli`或`PDO`扩展。同时,应当对用户输入进行过滤和验证,防止SQL注入等安全问题。此示例中未...

    MySQL面试知识点总结1

    MySQL是世界上最流行的关系型数据库管理系统之一,其面试中常见的知识点涵盖了数据库设计、SQL查询、事务处理、并发控制等多个方面。以下是对这些知识点的详细解析: 1. **数据库的三大范式**: - **第一范式(1NF...

    基于jdbc的连接池开发技术

    例如,在并发用户数达到100时,未使用连接池的应用程序平均响应时间为3秒左右,而使用连接池的应用程序平均响应时间降至0.5秒,处理能力提高了6倍以上。 #### 结论 本文详细介绍了基于JDBC的数据库连接池技术,...

    mysql 整理非常好的函数pdf文档

    这份整理得非常好的函数pdf文档,提供了一个详尽的函数列表及其使用场景和示例,非常适合于对MySQL函数不熟悉或需要深入理解这些函数的开发人员。通过学习和实践,用户可以更好地运用这些函数来处理实际问题。

    django2.0.7以上版本使用mysql,如何修改源码。(csdn)————程序.pdf

    为了使Django能够连接到MySQL数据库,需要安装`pymysql`库。可以通过以下命令进行安装: ```bash pip install pymysql ``` 接下来,在项目的某个`__init__.py`文件或者配置文件中导入`pymysql`并将其注册为`...

    mysql数据库复制维护说明.pdf

    - **示例**:`CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=98;` **自动化监控脚本**:通过编写Shell脚本,可以定期检查从服务器的复制状态,并根据错误类型自动处理一些常见问题。 ####...

    mysql代码-单表查询,多表查询

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理数据。在进行数据分析或构建应用程序时,了解如何有效...在实际工作中,可以使用`main.mysql`文件中的示例代码作为参考,进一步提高自己的MySQL技能。

Global site tag (gtag.js) - Google Analytics