一、介绍join

SQL join用来把来自两个或多个表的行结合起来,下图展示了LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN相关的七种用法:

不同的SQL join之间的区别:

  • INNER JOIN:如果表中有至少一个匹配,则返回行
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN:只要其中一个表中存在匹配,则返回行

二、代码例子

创建数据库:

create database if not exists test default charset utf8 collate utf8_general_ci;use test;SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `Websites`;
CREATE TABLE `Websites` (`id` int(11) NOT NULL,`name` char(20) NOT NULL DEFAULT '',`url` char(30) NOT NULL DEFAULT '',`alexa` int(11) NOT NULL,`country` char(10) NOT NULL DEFAULT '',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;DROP TABLE IF EXISTS `access_log`;
CREATE TABLE `access_log` (`aid` int(11) NOT NULL,`site_id` int(11) NOT NULL,`count` int(11) NOT NULL,`date` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;BEGIN;
INSERT INTO `Websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', 'TaoBao', 'https://www.taobao.cm/', '13', 'CN'), ('3', 'CaiNiao', 'https://www.runoob.cm/', '4689', 'CN'), ('4', 'Weibo', 'https://www.weibo.cm/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.cm/', '3', 'USA'), ('7', 'stackoverflow', 'https://www.stackoverflow.cm/', '0', 'IND');
COMMIT;BEGIN;
INSERT INTO `access_log` VALUES ('1', '1', '45', '2016-05-10'), ('2', '3', '100', '2016-05-13'), ('3', '1', '230', '2016-05-14'), ('4', '2', '10', '2016-05-14'), ('5', '5', '205', '2016-05-14'), ('6', '4', '13', '2016-05-15'), ('7', '3', '220', '2016-05-15'), ('8', '5', '545', '2016-05-16'), ('9', '3', '201', '2016-05-17');
COMMIT;

查看数据库:


在这两个表中,Websites表中的id列指向access_log表中的字段site_id,所以上面这两个表可以通过id和site_id联系起来。如果我们运行下面的SQL语句:

SELECT Websites.id, Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id;

输出如下:

参考-SQL连接(JOIN)

MySQL JOIN连接用法相关推荐

  1. Mysql JOIN连接算法

    MySQL 8.0 版本支持两种 JOIN 算法用于表之间的关联: Nested Loop Join: Hash Join. 通常认为,在 OLTP 业务中,因为查询数据量较小.语句相对简单,大多使用 ...

  2. mysql的join算法,Mysql Join 连接算法

    Join 语句的两种算法,分别是 Index Nested-Loop Join(NLJ) 和 Block Nested-Loop Join(BNL). 直接使用join mysql 优化器自动选择 驱 ...

  3. mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例

    MySQL JOIN 语法概述 SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据. JOIN 通常与 ON 关键字搭配使用,基本语法如下: ... FROM ...

  4. mysql 全连接_MySQL全连接(Full Join)实现,union和union all用法

    MySQL本身不支持你所说的full join(全连接),但可以通过union来实现 , 下面是一个简单测试,可以看看: mysql> CREATE TABLE a(id int,name ch ...

  5. mysql 多个left join_mysql多个left join连接查询用法分析

    本文实例讲述了mysql多个left join连接查询用法.分享给大家供大家参考,具体如下: mysql查询时需要连接多个表时,比如查询订单的商品表,需要查询商品的其他信息,其他信息不在订单的商品表, ...

  6. mysql outer join的用法_MySQL 8 中的连接语法JOIN、OUTER JOIN的相关用法

    JOIN连接为内连接(INNER JOIN),如果A表与B表进行JOIN连接,都是查询这两个表的交集,所谓交集就是这条记录既在A表中存在也在B表中存在:mysql> SELECT a.id, a ...

  7. mysql教程左右链接_mysql的左右内连接用法实例

    本文实例讲述了mysql的左右内连接用法.分享给大家供大家参考.具体如下: 用个例子来解析下mysql的左连接, 右连接和内连接 create table user_id ( id decimal(1 ...

  8. mysql+join的原理,Mysql连接join查询原理知识点

    Mysql连接join查询原理知识点 Mysql连接(join)查询 1.基本概念 将两个表的每一行,以"两两横向对接"的方式,所得到的所有行的结果. 假设: 表A有n1行,m1列 ...

  9. mysql join指定字段,mysql inner join用法

    inner join(等值连接):只返回两个表中联结字段相等的行. left join(左联接):返回包括左表中的所有记录和右表中联结字段相等的记录. right join(右联接):返回包括右表中的 ...

  10. 【node】express中mysql的基本用法、连接池的使用、事务的回滚

    [node]express中mysql的基本用法.连接池的使用 安装mysql包 mysql的配置信息 mysql基本操作 查询mysql并渲染数据 mysql插入操作 首先在html页面写上< ...

最新文章

  1. Linux下du加强版,灵活快速定位硬盘使用情况,无需安装
  2. Redhat5.4 LAMP配置
  3. Tensorflow2.x.x全卷积神经网络(CNN)
  4. android: 静态XML和动态加载XML混合使用,以及重写Layout控件
  5. 接口自动化测试系列(三):深入分析HTTP状态码400
  6. 用Linux命令行生成随机密码的十种方法
  7. 理解浏览器是如何加载及渲染网页的
  8. 将银行读卡设备读取到的身份证头像Bitmap属性转换成路径
  9. Python老司机总结新手常见10大错误
  10. 从零开始学Pytorch(十五)之数据增强
  11. Linux系统C/C++通用错误码实现模板
  12. Varnish——CDN加速实现(单个后端服务器、缓存命中率情况)
  13. 博弈论算法常见模型整理
  14. 米家扫地机器人 设置不停止_【小米 米家 扫地机器人使用总结】设置|清扫_摘要频道_什么值得买...
  15. 字节跳动做教育能否摆脱互联网公司“流量魔咒”?
  16. 如何成为职业高手(转自道法—自然老师)
  17. matlab mse mae,回归评价指标MSE、RMSE、MAE、R-Squared
  18. PyQt5 与 PySide2 所有事件大集合,一段代码包括键盘、鼠标和窗口所有事件
  19. 电脑无法新建文件怎么办?
  20. 智能科学与技术与数据科学与大数据技术哪个好

热门文章

  1. nginx配置php虚拟主机
  2. 服务器iis限制ip访问网站吗,利用IIS实现网站后台IP登录限制
  3. Flutter之实战InheritedWidget详解
  4. 宝塔建站 mysql在哪_宝塔面板安装LAMP,创建网站,创建数据库
  5. java流家族_1.1.2 完整的流家族
  6. android 监听连接超时,android – Retrofit和OkHttpClient,在失败方法中捕获连接超时
  7. delphi ado 连接mysql_delphi mysql ado连接
  8. mysql身份证校验码_通过SQL校验身份证号码是否正确
  9. spark学习——(二)spark基础环境配置-linux(1)
  10. plc和pc串口通讯接线_PLC与PC机之间的串行通信