MySQL JOIN 多表连接
除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接。多表连接基本语法如下:
1 |
... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON condition INNER|LEFT|RIGHTJOIN table3 ON condition ... |
JOIN 多表连接实现了从多个表中获取相关数据,下面是三个原始数据表:
| aid | title | content | uid | tid |
|---|---|---|---|---|
| 1 | 文章1 | 文章1正文内容… | 1 | 1 |
| 2 | 文章2 | 文章2正文内容… | 1 | 2 |
| 3 | 文章3 | 文章3正文内容… | 2 | 1 |
| 5 | 文章5 | 文章5正文内容… | 4 | 1 |
| uid | username | |
|---|---|---|
| 1 | admin | admin@5idev.com |
| 2 | 小明 | xiao@163.com |
| 3 | Jack | jack@gmail.com |
| tid | typename |
|---|---|
| 1 | 普通文章 |
| 2 | 精华文章 |
| 3 | 草稿 |
MySQL INNER JOIN 多表
我们使用 INNER JOIN 列出三个表中都具有关联关系的数据:
1 |
SELECT article.aid,article.title,user.username,type.typename FROM articleINNER JOIN user |
2 |
ON article.uid=user.uid INNER JOIN type ON article.tid=type.tid |
返回查询结果如下:
| aid | title | username | typename |
|---|---|---|---|
| 1 | 文章1 | admin | 普通文章 |
| 2 | 文章2 | admin | 精华文章 |
| 3 | 文章3 | 小明 | 普通文章 |
MySQL LEFT JOIN 多表
使用 LEFT JOIN 三个表查询:
1 |
SELECT article.aid,article.title,user.username,type.typename FROM articleLEFT JOIN user |
2 |
ON article.uid=user.uid LEFT JOIN type ON article.tid=type.tid |
返回查询结果如下:
| aid | title | username | typename |
|---|---|---|---|
| 1 | 文章1 | admin | 普通文章 |
| 2 | 文章2 | admin | 精华文章 |
| 3 | 文章3 | 小明 | 普通文章 |
| 4 | 文章4 | NULL | 普通文章 |
MySQL RIGHT JOIN 多表
使用 RIGHT JOIN 三个表查询:
1 |
SELECT article.aid,article.title,user.username,type.typename FROM articleRIGHT JOIN user |
2 |
ON article.uid=user.uid RIGHT JOIN type ON article.tid=type.tid |
返回查询结果如下:
| aid | title | username | typename |
|---|---|---|---|
| 1 | 文章1 | admin | 普通文章 |
| 2 | 文章2 | admin | 精华文章 |
| 3 | 文章3 | 小明 | 普通文章 |
| NULL | NULL | NULL | 草稿 |
可见,在 RIGHT JOIN 右连接中,只是列出最后一个右连接表的所有数据。
说明
对于 MySQL 多表 JOIN,还可以 INNER、LEFT 和 RIGHT 混用,其返回结果与各关键字顺序有关,感兴趣可自行测试。
MySQL JOIN 多表连接的更多相关文章
- join多表连接和group by分组
join多表连接和group by分组 上一篇里面我们实现了单表查询和top N查询,这一篇我们来讲述如何实现多表连接和group by分组. 一.多表连接 多表连接的时间是数据库一个非常耗时的操作, ...
- MySql left join 多表连接查询优化语句
先过滤条件然后再根据表连接 同时在表中建立相关查询字段的索引这样在大数据多表联合查询的情况下速度相当快 创建索引: create index ix_register_year ON dbo.selec ...
- python实现简易数据库之三——join多表连接和group by分组
上一篇里面我们实现了单表查询和top N查询,这一篇我们来讲述如何实现多表连接和group by分组. 一.多表连接 多表连接的时间是数据库一个非常耗时的操作,因为连接的时间复杂度是M*N(M,N是要 ...
- MySQL 约束、表连接、表关联、索引
一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性. 外键:是另一表的唯一性 ...
- mysql 三个表连接查询
权限表(permission)10 字段名称 类型 约束 描述 authorityid integer Pk not null 权限流水号id PK userNameId int not nul ...
- c# DataTable join 两表连接
转:https://www.cnblogs.com/xuxiaona/p/4000344.html JlrInfodt和dtsource是两个datatable,通过[姓名]和[lqry]进行关联 v ...
- 表连接sql执行计划学习
循环嵌套连接(Nested Loop Join) 合并连接(Merge Join) 哈西匹配(Hash Join) 文章:浅谈SQL Server中的三种物理连接操作 循环嵌套,如果内循环列上有索引, ...
- mysql join表连接
1.表连接,就是将两个表合并起来,被合并的表的记录要通过中间字段,一一匹配起来左边的表的记录,形成一张临时的合并的表,并且每条记录的值都是两张表一一准确对应的 实例 尝试以下实例: root@host ...
- Mysql 多表连接查询 inner join 和 outer join 的使用
JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. 首先先列举本篇用到的分类(内连接,外连接,交 ...
随机推荐
- clientdataset 做为 单机数据库的 使用 学习
http://blog.csdn.net/waveyang/article/details/34146737 unit Unit3; interface uses Winapi.Windows, Wi ...
- SoapUI乱码问题处理方法
前言 每个工具都会有一些意想不到的“坑”,SoapUI也不例外.无论是参数或者响应报文,大家可能都遇到过乱码问题,这里记录一下几种解决乱码的方法. 一.修改显示字体 在File>>> ...
- SpringBoot 创建 console程序
1.在pom中添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...
- [Python3 填坑] 018 组装类的几个例子
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 MetaClass 举例 2.2 type 举例 2.3 MetaClass 举例 1. print( 坑的信息 ) 挖坑时间:2019 ...
- Java高级数据类型转换:包装类、String字符串、Date类等与其他类型转换
1.包装类过渡类型转换 一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了.例如: 当希望把float型转换为double型时: float f1=1 ...
- java_第一年_JDBC(6)
DataBaseMetaData对象:由Connection.getDataBaseMetaData()方法获得,可以用来获取数据库的元数据,提供的方法有: getURL():返回一个String类, ...
- [BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并)
[BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并) 题面 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1 ...
- 【题解】Shortest Cycle
原题链接:CF1205B 题目大意 给定\(n\)个整数\(a_1,a_2,a_3, \dots ,a_n\),若\(i \neq j\)且\(a_i \land a_j \neq 0\),则 ...
- python Calendar 模块导入及用法
Calendar 是python 日历模块,此模块的函数都是日历相关的,例如打印某月的字符月历,星期之类的模块,下面剖析python Calendar 模块导入及用法. 1,python导入日历模块 ...
- Webpack和Gulp对比
Webpack和Gulp对比 作者 彬_仔 关注 2016.10.19 22:42* 字数 8012 阅读 2471评论 18喜欢 68 在现在的前端开发中,前后端分离.模块化开发.版本控制.文件合并 ...