我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中七种JOIN的SQL是怎样的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中七种JOIN的SQL是怎样的

这篇文章将为大家详细讲解有关MySQL中七种JOIN的SQL是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

准备数据

以一个简易问答系统为例,包括问题表和问题所属标签,问题表如下:

CREATE TABLE `t_qa` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `title` varchar(200) NOT NULL DEFAULT '' COMMENT '标题',   `answer_count` int(5) unsigned NOT NULL DEFAULT '0' COMMENT '回答个数',   `label_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '标签id',   `create_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建人',   `create_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',   `update_by` bigint(20) unsigned DEFAULT NULL COMMENT '更新人',   `update_date` datetime DEFAULT NULL COMMENT '更新时间',   `del_flag` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0:不删除,1:删除',   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  INSERT INTO `t_qa` (`id`, `title`, `answer_count`, `label_id`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`) VALUES     (1, 'Java是什么?', 5, 1, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (2, 'PHP是什么?', 4, 2, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (3, '前端是什么?', 3, 3, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (4, 'nodejs是什么?', 2, 0, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (5, 'css是什么?', 1, 0, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (6, 'JavaScript是什么?', 0, 0, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0);

标签表如下:

CREATE TABLE `t_label` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称',   `create_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建人',   `create_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',   `update_by` bigint(20) unsigned DEFAULT NULL COMMENT '更新人',   `update_date` datetime DEFAULT NULL COMMENT '更新时间',   `del_flag` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0:不删除,1:删除',   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  INSERT INTO `t_label` (`id`, `name`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`) VALUES     (1, 'java', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (2, 'php', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (3, '大前端', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (4, 'mybatis', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (5, 'python', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),     (6, '多线程', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0);

一、左连接(LEFT JOIN)

MySQL中七种JOIN的SQL是怎样的

问题回答个数标签id标签名称
Java是什么?51java
PHP是什么?42php
前端是什么?33大前端
nodejs是什么?2NULLNULL
css是什么?1NULLNULL
JavaScript是什么?1NULLNULL
SELECT      tq.title, tq.answer_count, tl.id, tl.name FROM      t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id

二、右连接(RIGHT JOIN)

MySQL中七种JOIN的SQL是怎样的

问题回答个数标签id标签名称
Java是什么?51java
PHP是什么?42php
前端是什么?33大前端
NULLNULL4mybatis
NULLNULL5python
NULLNULL6多线程
SELECT     tq.title, tq.answer_count, tl.id, tl.name FROM      t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id

三、内连接(INNER JOIN)

MySQL中七种JOIN的SQL是怎样的

问题回答个数标签id标签名称
Java是什么?51java
PHP是什么?42php
前端是什么?33大前端
SELECT      tq.title, tq.answer_count, tl.id, tl.name FROM      t_qa tq INNER JOIN t_label tl ON tq.label_id = tl.id

四、左独有连接(LEFT JOIN)

MySQL中七种JOIN的SQL是怎样的

问题回答个数标签id标签名称
nodejs是什么?2NULLNULL
css是什么?1NULLNULL
JavaScript是什么?0NULLNULL
SELECT      tq.title, tq.answer_count, tl.id, tl.name FROM      t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id WHERE     tl.id IS NULL

五、右独有连接(RIGHT JOIN)

MySQL中七种JOIN的SQL是怎样的

问题回答个数标签id标签名称
NULLNULL4mybatis
NULLNULL5python
NULLNULL6多线程
SELECT      tq.title, tq.answer_count, tl.id, tl.name FROM      t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id WHERE     tq.label_id IS NULL

六、全连接(FULL JOIN)

MySQL中七种JOIN的SQL是怎样的

由于MySQL不支持FULL OUTER JOIN,所以如果有全连接需求时,可用表达式:full outer join = left outer join  UNION right outer join来实现。

问题回答个数标签id标签名称
Java是什么?51java
PHP是什么?42php
前端是什么?33大前端
nodejs是什么?2NULLNULL
css是什么?1NULLNULL
JavaScript是什么?0NULLNULL
NULLNULL4mybatis
NULLNULL5python
NULLNULL6多线程
SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id UNION SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id

七、全连接去交集(FULL JOIN)

MySQL中七种JOIN的SQL是怎样的

问题回答个数标签id标签名称
nodejs是什么?2NULLNULL
css是什么?1NULLNULL
JavaScript是什么?0NULLNULL
NULLNULL4mybatis
NULLNULL5python
NULLNULL6多线程
SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id WHERE tl.id IS NULL UNION SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id WHERE tq.label_id IS NULL

关于MySQL中七种JOIN的SQL是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中七种JOIN的SQL是怎样的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL:七种 SQL JOINS 的实现(图文详解)

MySQL:7种SQL JOINS的实现 前言一、图示表示二、代码举例1、INNER JOIN(内连接)2、LEFT JOIN(左连接)3、RIGHT JOIN(右连接)4、OUTER JOIN(全连接)5、LEFT EXCLUDI
2023-08-16

mysql中的join是什么

mysql 中的 join 是用于组合不同表数据的查询命令,它通过匹配列创建临时表。join 有四种类型:inner join(仅匹配两表中都存在的行)、left join(选择左表所有行)、right join(选择右表所有行)和 ful
mysql中的join是什么
2024-04-29

sql中cross join的用法是什么

在SQL中,CROSS JOIN是一种用于返回两个表之间的笛卡尔积的操作。也就是说,它会返回两个表的所有可能的组合。例如,假设有两个表A和B,表A有3行记录,表B有2行记录。使用CROSS JOIN操作后,将返回一个有6行记录的结果集,其
sql中cross join的用法是什么
2024-04-09

SQL 中各种各样的函数

目录一、函数的种类二、算术函数2.1 ABS——绝对值2.2 MOD——求余2.3 ROUND——四舍五入三、字符串函数3.1 ||——拼接3.2 LENGTH——字符串长度3.3 LOWER——小写转换3.4 REPLACE——字符串的替换3.5 SUBST
SQL 中各种各样的函数
2018-07-05

MySQL内连接和外连接及七种SQL JOINS的实现

目录1. 内连接2.外连接左外连接:右外连接:满外连接:3. SQL99语法实现多表查询3.1 SQL99实现内连接3.2 SQL99语法实现外连接3.2.1 左外连接3.2.2 右外连接3.2.3 满外连接4.总结:七种SQL JOINS
2023-03-23

SQL中join的使用方法是什么

在SQL中,使用JOIN操作可以将两个或多个表中的行连接起来,以便进行数据查询和分析。JOIN操作的基本语法如下:SELECT 列名FROM 表1JOIN 表2ON 表1.列名 = 表2.列名其中,表1和表2是要连接的两个表,ON
2023-10-26

mysql中join的作用是什么

这篇文章主要介绍“mysql中join的作用是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql中join的作用是什么”文章能帮助大家解决问题。在mysql中
2022-11-30

sql语句中的join怎么使用

在SQL中,JOIN用于将两个或多个表中的行连接在一起。JOIN操作的基本语法如下:```sqlSELECT 列名FROM 表1JOIN 表2ON 表1.列名 = 表2.列名;```其中,JOIN子句指定了要连接的两个表以及连接条件。常见的
2023-10-10

编程热搜

目录