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”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. 首先先列举本篇用到的分类(内连接,外连接,交 ...
随机推荐
- nginx proxy_pass 和 proxy_redirect
proxy_pass:充当代理服务器,转发请求proxy_redirect:修改301或者302转发过程中的Location.默认值为proxy_redirect default. 例:locatio ...
- clientdataset 做为 单机数据库的 使用 学习
http://blog.csdn.net/waveyang/article/details/34146737 unit Unit3; interface uses Winapi.Windows, Wi ...
- Navicat Premium 12.1.20.0安装与激活
一.Navicat Premium 12下载 链接: https://pan.baidu.com/s/1GgNbCPGahN-Z91f4dnQkBQ 提取码: 3q8f 复制这段内容后打开百度网盘手机 ...
- HIbernate入门3
HIbernate的一对多操作: 1. 创建实体类:一个Customer类(客户类)和一个LinkMan类(联系人),两者的关系为:一个客户中可能有多个联系人(关于一对多的实体类之间的关联,不做详细介 ...
- 中标麒麟系统安装rpm文件
打开终端,获得su权限. cd到rpm所在文件夹,输入指令,rpm -ivh rpm的名称
- Python pass是空语句用法
在条件判断,还是函数中,有时候不需要输出任何东西,也不能留空,python提供空的语句,下面讲述pass空语句的用法 1,关键词 pass 2,用法 for letter in 'Python': i ...
- Tomcat 8.5 apr 模式配置
tomcat APR模式配置 一.环境 操作系统:Ubutnu 14 ubuntu@ubuntu:~$ uname -a Linux ubuntu 4.4.0-31-generic #50~14.04 ...
- jQ:"对象不支持“first”属性或方法"IE内核下不兼容first()、chilrdren()方法的处理
场景:需要查找某元素下的第一个子集,使用了如下语句: $("#left_1>tbody").find(".menuTr").first().addClas ...
- vue.js(18)--父组件向子组件传值
子组件是不能直接使用父组件中数据的,需要进行属性绑定(v-bind:自定义属性名=“msg”),绑定后需要在子组件中使用props[‘自定义属性名’]数组来定义父组件的自定义名称. props数组中的 ...
- vue.js(14)--自定义全局指令
<input type="text" class="form-control" v-model="keywords" v-focus& ...