Mysql两表联合查询的四种情况总结

yizhihongxing

下面是详细讲解“Mysql两表联合查询的四种情况总结”的完整攻略。

简介

Mysql联合查询是指在多个表中查询出相关联的数据,并将这些数据组合成一个数据集合。

一般常见的联合查询有两个表之间的连接查询和两个表的全集查询,而这两种查询又可以分成内联接、左联接、右联接、全联接等四种情况。下面我们将分别介绍这四种情况的使用方法。

内联接

内联接是指仅显示两个表中相匹配的行。在 MySQL 中,内联接默认是 INNER JOIN 。

内联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
INNER JOIN 表2
ON 表1.字段=表2.字段;

示例:

假设我们有两个表,一个叫stu, 一个叫score,stu表中保存了学生的姓名和ID信息,score表中保存了学生成绩信息(包括ID和成绩信息),我们希望查询出两个表匹配的学生ID、姓名和成绩。

首先我们需要使用 INNER JOIN 语句连接两个表,具体代码如下:

SELECT score.ID, stu.name, score.score
FROM score 
INNER JOIN stu 
ON score.ID = stu.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
+----+------+-------+

说明:这个查询语句使用了 INNER JOIN 命令、score 表和 stu 表。

左联接

左联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
LEFT JOIN 表2
ON 表1.字段=表2.字段;

示例:

我们还可以使用左联接查询出两个表中匹配和不匹配的数据,具体代码如下:

SELECT stu.ID, stu.name, score.score
FROM stu
LEFT JOIN score
ON stu.ID = score.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
|  4 | John |  NULL |
+----+------+-------+

说明:这个查询语句使用了 LEFT JOIN 命令、score 表和 stu 表。

右联接

右联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
RIGHT JOIN 表2
ON 表1.字段=表2.字段;

示例:

我们还可以使用右联接查询出两个表中匹配和不匹配的数据,具体代码如下:

SELECT stu.ID, stu.name, score.score
FROM stu
RIGHT JOIN score
ON stu.ID = score.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
|NULL| NULL |   60  |
+----+------+-------+

说明:这个查询语句使用了 RIGHT JOIN 命令、score 表和 stu 表。

全联接

全联接查询是指返回两个表中所有的数据。全联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
FULL JOIN 表2
ON 表1.字段=表2.字段;

示例:

我们还可以使用全联接查询出两个表中全部的数据,具体代码如下:

SELECT stu.ID, stu.name, score.score
FROM stu
FULL JOIN score
ON stu.ID = score.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
|  4 | John |  NULL |
|NULL| NULL |   60  |
+----+------+-------+

说明:这个查询语句使用了 FULL JOIN 命令、score 表和 stu 表。

结束语

这就是 Mysql 两表联合查询的四种情况的操作方法了。需要注意的是,在 Mysql 的语句中,内联接默认的是 INNER JOIN,而其他三种则需要分别使用 LEFT JOIN、RIGHT JOIN、FULL JOIN 进行操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql两表联合查询的四种情况总结 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 在数据库里将毫秒转换成date格式的方法

    将毫秒数转换成date格式是非常常见的操作,可以使用数据库里的函数进行转换。下面是将毫秒数转换成date格式的详细攻略: 1.将毫秒数转换成date格式的函数 在数据库里,可以使用内置函数FROM_UNIXTIME()将时间戳转换成日期格式,然后将毫秒数除以1000转换成秒数作为参数传入该函数中即可。把函数的输出结果指定为日期格式即可输出日期。 以下是 My…

    database 2023年5月22日
    00
  • Redis went away

    输入法业务于12月12日上线词库推送业务,根据用户uuid(uuid平台校验)进行词库推送,在12月17日早上8点多开始出现大量的php报错(Redis went away),报错导致了大量的链接积累,瞬间服务器的80端口堆积到了2w多导致了接收计费日志的接口全部返回超时,丢失了1小时的结费数据。 报错内容如下: [17-Dec-2018 01:32:51 …

    Redis 2023年4月13日
    00
  • Mysql合并结果接横向拼接字段的实现步骤

    实现Mysql合并结果接横向拼接字段需要使用到Mysql的联接查询和GROUP_CONCAT函数,具体步骤如下: 1.使用联接查询将需要合并的表联接起来,联接的条件为两个表中的一列或多列数据相同。 SELECT A.id, A.name, B.age FROM tableA A JOIN tableB B ON A.id = B.id; 以上示例中,假设ta…

    database 2023年5月22日
    00
  • 通过使用Byte Buddy便捷创建Java Agent

    本文将为大家介绍如何通过使用Byte Buddy创建Java Agent,达到对Java应用程序的增强和监控的目的。 第一步:新建项目并导入依赖 首先,我们需要在Eclipse或者IntelliJ IDEA中创建一个Maven项目,并导入Byte Buddy的依赖: <dependency> <groupId>net.bytebudd…

    database 2023年5月21日
    00
  • MySQL5.6基本优化配置

    MySQL5.6基本优化配置是数据库性能优化的重要一环,本文将从如下三个方面来进行详细讲解: 硬件选型与参数配置 MySQL参数优化 SQL语句优化 1. 硬件选型与参数配置 1.1 硬件选型 对于MySQL数据库,硬件选型非常重要。基于不同的应用场景,硬件选型的重点也不同,通常需要考虑CPU、内存、磁盘IO性能等因素。 MySQL在CPU的利用上较为看重单…

    database 2023年5月22日
    00
  • Mysql联合查询UNION和UNION ALL的使用介绍

    当我们需要从多个MySQL数据库表或查询中检索数据时,可能需要使用联合查询(UNION)。联合查询可以将多个查询的结果组合成一个结果集,这些查询可以来自同一张表、不同的表或是视图。在MySQL中,可以使用UNION或UNION ALL进行联合查询操作,本文将详细介绍这两种联合查询的使用方法,使用示例如下。 UNION UNION用来组合两个或多个SELECT…

    database 2023年5月22日
    00
  • mysql5.5与mysq 5.6中禁用innodb引擎的方法

    请看下面的攻略。 禁用 InnoDB 引擎的方法 在 MySQL 5.5 和 MySQL 5.6 中禁用 InnoDB 引擎的方法不同,下面将分别介绍。 MySQL 5.5 中禁用 InnoDB 引擎的方法 在 MySQL 5.5 中,我们可以通过修改 MySQL 配置文件来禁用 InnoDB 引擎。 打开 MySQL 配置文件 my.cnf,可以使用下面的…

    database 2023年5月21日
    00
  • mysql计算时间差函数

    下面是关于MySQL计算时间差函数的完整攻略: 什么是MySQL计算时间差函数 MySQL计算时间差函数用于计算两个时间之间的差值。常用的函数有DATEDIFF、TIMESTAMPDIFF、TIME_TO_SEC、SEC_TO_TIME等。本文将以这几个函数为例,详细讲解它们的用法。 注:本文下面将使用如下两个日期进行演示: SET @date1 = ’20…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部