热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql多表连接查询inner/left/right/full/crossjoin

---------建表table1,tabel2---------createtabletable1(idint,namevarchar(20))createtabletable2(i
---------建表 table1,tabel2---------
create table table1(id int, name varchar(20))
create table table2(id int, age int)

insert into table1 select 1,'zhangsan'
insert into table1 select 2,'lisi'
insert into table1 select 3,'wangwu'

insert into table2 select 1,20
insert into table2 select 2,30
insert into table2 select 4,25

-----------------------如表----------------------
table1                     |         table2
---------------------------------------------------
id    name               |         id    age
1     zhangsan         |        1     20
2     lisi                    |        2     30
3     wangwu            |        4     25
(1) 内连接 (inner join /  join): 两表都满足的组合
-----------------------sql语句---------------------------
select * from table1 join table2 on table1.id=table2.id
-----------------------结果-------------------------------
 id         name               id            age
 1          zhangsan        1             20
 2          lisi                   2             30
(2) 全连接 (full outer join /   full join ):两表相同的组合在一起,A表有,B表没有的数据(显示为null),
同样B表有的A表没有显示为null.
-----------------------sql语句---------------------------
select * from table1 full join table2 on table1.id=table2.id
-----------------------结果-------------------------------
 id         name               id            age
 1          zhangsan        1             20
 2          lisi                   2             30
 3           wangwu          null         null 
 null        null                 4            25
(3) 左连接 (left join   /  left outer join):A表left join B表 左连,以A表为基础,A表的全部数据,B表有的组合,没有的为null
-----------------------sql语句---------------------------
select * from table1 left join table2 on table1.id=table2.id
-----------------------结果-------------------------------
 id         name               id            age
 1          zhangsan        1             20
 2          lisi                   2             30
 3           wangwu          null         null 
 
(4) 右连接 (right join  / right  outer join):A表right join B表 右连,以B表为基础,B表的全部数据,A表有的组合,没有的为null
-----------------------sql语句---------------------------
select * from table1 right join table2 on table1.id=table2.id
-----------------------结果-------------------------------
 id         name               id            age
 1          zhangsan        1             20
 2          lisi                   2             30
 null       null                  4            25 
(5) 交叉连接 (cross join):没有where子句的交叉联接将产生联接所涉及的表的笛卡尔积,第一个表的行数
乘以第二个表的行数等于笛卡尔积结果集的大小(table1和table2交叉连接产生3*3=9条记录)
-----------------------sql语句---------------------------
select * from table1 cross join table2 与 select * from table1, table2相同
-----------------------结果-------------------------------
 id         name               id            age
 1          zhangsan        1             20
 2          lisi                   1             20
 3           wangwu          1             20
 1          zhangsan        2             30
 2          lisi                   2             30
 3           wangwu          2             30
 1          zhangsan        4             25
 2          lisi                   4             25
 3           wangwu          4             25
推荐阅读
  • mysql数据库json类型数据,sql server json数据类型
    mysql数据库json类型数据,sql server json数据类型 ... [详细]
  • spring(22)JdbcTemplate
    2019独角兽企业重金招聘Python工程师标准###1.导入jar包,必须jar包:c3p0、mysql-connector、beans、con ... [详细]
  • 本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ... [详细]
  • SQL Server 存储过程实践任务(第二部分)
    本文档详细介绍了三个SQL Server存储过程的创建与使用方法,包括统计特定类型客房的入住人数、根据房间号查询客房详情以及删除特定类型的客房记录。 ... [详细]
  • Django与Python及其他Web框架的对比
    本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ... [详细]
  • 本文将详细介绍 SQL 中的 SUM 函数及其用法,并通过具体示例展示如何在实际场景中应用。 ... [详细]
  • 本文介绍了几个关于SQL查询中列使用的优化规则,包括避免使用SELECT *、指定INSERT列名、修改自增ID为无符号类型、为列添加默认值以及为列添加注释等。 ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
  • 本文详细探讨了如何在PHP中有效防止SQL注入攻击,特别是在使用MySQL数据库时。文章通过具体示例和专业建议,帮助开发者理解和应用最佳实践。 ... [详细]
  • 本文介绍了如何在 SQL Server 2005 中创建和使用数据库快照,包括创建数据库、数据表、插入数据、创建快照、查询快照数据以及使用快照进行数据恢复等操作。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 本文详细介绍了MySQL故障排除工具及其使用方法,帮助开发者和数据库管理员高效地定位和解决数据库性能问题。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 本文讨论了在 Oracle 10gR2 和 Solaris 10 64-bit 环境下,从 XMLType 列中提取数据并插入到 VARCHAR2 列时遇到的性能问题,并提供了优化建议。 ... [详细]
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
author-avatar
飞天6585_439
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有