MySQL JOIN 语法概述

SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据。

JOIN 通常与 ON 关键字搭配使用,基本语法如下:

... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona

table1 通常称为左表,table2 称为右表。ON 关键字用于设定匹配条件,用于限定在结果集合中想要哪些行。如果需要指定其他条件,后面可以加上 WHERE 条件 或者 LIMIT 以限制记录返回数目等。

下面以最常见的两表连接来说明 MySQL JOIN 的用法,关于多表 JOIN 请参见《MySQL JOIN 多表》。

MySQL JOIN 分类

JOIN 按照功能大致分为如下三类:

INNER JOIN(内连接):取得两个表中存在连接匹配关系的记录。

LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。

RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。

关于 MySQL FULL JOIN 全连接

MySQL 没有提供 SQL 标准中的 FULL JOIN(全连接):两个表记录都取出,而不管彼此是否有对应记录。要解决此问题,可以使用 UNION 关键字来合并 LEFT JOIN 与 RIGHT JOIN,达到模拟 FULL JOIN 的目的。

INNER JOIN 用于取得两个表中存在连接匹配关系的记录。下面是两个原始数据表:

article 文章表:

aid

title

content

uid

1

文章1

文章1正文内容...

1

2

文章2

文章2正文内容...

1

3

文章3

文章3正文内容...

2

4

文章4

文章4正文内容...

4

user 用户表:

uid

username

email

1

admin

admin@5idev.com

2

小明

xiao@163.com

3

Jack

jack@gmail.com

article 表中文章的所属用户是通过 uid 这个字段与 user 表关联起来的。通过观察数据不难发现,对于 uid=3 的用户,并没有发表任何文章;而文章中 aid=4 却无法在 uid 表中找到对应记录(可能是该用户被删除而其所属的文章却被保留了下来)。

我们列出所用文章与用户一一对应的数据。

SELECT ... INNER JOIN ... ON 语句如下:

SELECT article.aid,article.title,user.username FROM article INNER JOIN user ON article.uid = user.uid

返回查询结果如下:

aid

title

username

1

文章1

admin

2

文章2

admin

3

文章3

小明

对于 INNER JOIN,等同与下面的 SQL 语句:

SELECT article.aid,article.title,user.username FROM article,user WHERE article.uid = user.uid

CROSS JOIN

CROSS JOIN 即交叉连接,在不指定 ON 条件下:

SELECT article.aid,article.title,user.username FROM article CROSS JOIN user

得到的结果是被连接的两个数据表的乘积,即笛卡尔积。

实际上,在 MySQL 中(仅限于 MySQL) CROSS JOIN 与 INNER JOIN 的表现是一样的,在不指定 ON 条件得到的结果都是笛卡尔积,反之取得两个表完全匹配的结果。

INNER JOIN 与 CROSS JOIN 可以省略 INNER 或 CROSS 关键字,因此下面的 SQL 效果是一样的:

... FROM table1 INNER JOIN table2

... FROM table1 CROSS JOIN table2

... FROM table1 JOIN table2

mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例相关推荐

  1. mysql left join_MySQL LEFT JOIN 语法用法与实例

    MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT JOIN 基本语法如下: ... ...

  2. mysql as join_mysql as 别名与 join 多表连接语法

    在MySQL中,使用AS关键字为字段.表.视图取别名,或者不用as,用空格隔开: SELECT (SELECT id a,title b FROM blog c limit 1)d; 使用字段别名,可 ...

  3. mysql中的联结_MySQL的联结(Join)语法

    MySQL的联结(Join)语法 1.内联结.外联结.左联结.右联结的含义及区别: 在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如果内 ...

  4. mysql natural join_MySQL STRAIGHT_JOIN 与 NATURAL JOIN

    MySQL STRAIGHT_JOIN STRAIGHT_JOIN 是 MySQL 对标准 SQL 的扩展,用于在多表查询时指定表载入的顺序.在 JOIN 表连接中,同样可以指定表载入的顺序,本文只讲 ...

  5. mysql多表关联left join_Mysql多表表关联查询 inner Join left join right join

    一.Join语法概述 join 用于多表中字段之间的联系,语法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1: ...

  6. mysql inner join_MySQL内连接(INNER JOIN)

    MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录. INNER JOIN子句是SELECT语句的可选部分,它出现在FROM子句之后. 在使用 ...

  7. mysql hash join_MySQL Hash Join

    在MySQL 8.0.18之前,表的join方式只有嵌套循环(nested loop)这一种方式,8.0.18推出了hash join的方式以替代嵌套循环. 使hash join方式生效的前提是用于j ...

  8. mysql right join实例_MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

    LEFT JOIN 语法用法与实例MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT ...

  9. mysql中join on_Mysql inner join on的用法实例(必看)

    语法规则 SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_ ...

最新文章

  1. 知识图谱 (知识计算推理)
  2. ICPR 2020国际学术竞赛:大规模无噪声精细商品图像识别
  3. 【Protocol Buffer】Protocol Buffer入门教程(六):枚举和包
  4. 【代码笔记】iOS-TableViewOfTwoSecton
  5. 网络基础:分享几个路由器设置小技巧,总有用得到的一天!
  6. 让自己变成一个上进的人
  7. centos7 转换为lvm_(建议收藏)CentOS7挂载未分配的磁盘空间以及LVM详细介绍
  8. ## CSP 201312-2 ISBN号码(C语言)(100分)
  9. HBase-shell及happyhbase
  10. 如何进行大数据入门的学习
  11. 清华大学计算机直硕生,推免数据 | 清华大学计算机系三大巨变——直硕生减半,本校增多,211增多...
  12. pytorch模型转mxnet
  13. 【windows】网络设置了代理,怎么关闭
  14. 工业软件CAD、CAE、CAM介绍
  15. VC++常用功能开发
  16. 第50周收录98起融资,国内低靡,国外智能硬件火热 | 潜在周报
  17. android 用户引导高亮,Android开发之高亮引导
  18. 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 5 章 答案
  19. 龙泉驿区!成都经开区支持扩大汽车消费政策申报条件时间及认定奖励补助
  20. STM32 FreeRTOS CMSIS—OS

热门文章

  1. 雪花漂浮php,canvas实现雪花随机动态飘落效果(代码示例)
  2. 【最新实用版】Python批量将pdf文本提取并存储到txt文件中
  3. 2016年计算机一级ps试题,2016年计算机一级photoshop模拟试题
  4. java控制excel_利用Java控制EXCEL实例详解
  5. Java中间件开发01--Java中间件介绍及部署的准备工作
  6. 电脑上的Eclipse自动提示功能突然消失
  7. spark 蘑菇云入学测试题,考试题
  8. AI随芯动:全志科技与OPEN AI LAB战略合作
  9. Win10下fastboot找不到设备解决方法(Android平板)
  10. 基于微信小程序的校园二手市场