首页 > 数据库 >MySQL查询两个表差异数据

MySQL查询两个表差异数据

时间:2023-07-19 15:32:16浏览次数:27  
标签:table2 table1 JOIN 差异 表中 查询 MySQL 数据 id

MySQL查询两个表差异数据

在使用MySQL进行数据处理和分析时,有时需要比较两个表之间的差异数据。比如,我们可能需要找出在两个表中都存在的数据,或者找出只在其中一个表中存在的数据。本文将介绍如何使用MySQL进行这些差异数据查询,并提供相应的代码示例。

创建示例表

首先,我们需要创建两个示例表用于演示差异数据查询。我们将创建两个表table1table2,并在这两个表中插入一些数据。

CREATE TABLE table1 (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE table2 (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

INSERT INTO table1 VALUES (1, 'John');
INSERT INTO table1 VALUES (2, 'Alice');
INSERT INTO table1 VALUES (3, 'Bob');

INSERT INTO table2 VALUES (1, 'John');
INSERT INTO table2 VALUES (3, 'Bob');
INSERT INTO table2 VALUES (4, 'Mike');

查询两个表中共有的数据

要查询在两个表中都存在的数据,我们可以使用INNER JOIN来实现。INNER JOIN会返回两个表中满足连接条件的数据。

SELECT table1.id, table1.name
FROM table1
INNER JOIN table2 ON table1.id = table2.id;

输出结果:

+----+------+
| id | name |
+----+------+
|  1 | John |
|  3 | Bob  |
+----+------+

查询只在一个表中存在的数据

要查询只在一个表中存在的数据,我们可以使用LEFT JOINRIGHT JOIN来实现。LEFT JOIN会返回左表中所有的数据以及满足连接条件的右表数据,而RIGHT JOIN会返回右表中所有的数据以及满足连接条件的左表数据。

查询只在table1中存在的数据

SELECT table1.id, table1.name
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table2.id IS NULL;

输出结果:

+----+-------+
| id | name  |
+----+-------+
|  2 | Alice |
+----+-------+

查询只在table2中存在的数据

SELECT table2.id, table2.name
FROM table1
RIGHT JOIN table2 ON table1.id = table2.id
WHERE table1.id IS NULL;

输出结果:

+----+------+
| id | name |
+----+------+
|  4 | Mike |
+----+------+

结论

通过使用INNER JOINLEFT JOINRIGHT JOIN,我们可以查询两个表之间的差异数据。对于在两个表中都存在的数据,可以使用INNER JOIN。对于只在一个表中存在的数据,可以使用LEFT JOINRIGHT JOIN

以上就是使用MySQL查询两个表差异数据的方法和示例。希望本文能对你在MySQL数据查询和处理方面有所帮助!

标签:table2,table1,JOIN,差异,表中,查询,MySQL,数据,id
From: https://blog.51cto.com/u_16175514/6776690

相关文章

  • MySQL把choose表中的report改名为score,数据类型改为float; 将choose表的score默
    MySQL把choose表中的report改名为score,数据类型改为float;将choose表的score默认值设为0流程步骤步骤操作1.连接至MySQL数据库2.切换至对应数据库3.修改表结构,将report改名为score并更改数据类型4.设定score字段的默认值为0具体步骤与代码示例步骤......
  • 关于mysql自增ID何时重置引发的思考
    背景mysql有一个表因为数据量太大,单表查询很慢,决定做表分区.但是做表分区的时候,分区键如果不是主键的话,要把原来的主键(id)取消重新将原来的主键(id)和分区键绑定做一个复合主键.但是原来的主键(id)是自增的,取消它需要先取消自增.然后复合主键建立之后再把id设为自增......
  • 查询端口进程并结束进程
    查询占用某个端口的PIDnetstat-ano|findstr"端口号"根据PID查找进程tasklist|findstr"32080"根据PID结束进程taskkill-PID32080-F......
  • centos7.9离线安装mysql5.7.42(本文使用initialize安装方法)
    centos7.9离线安装mysql5.7.42(本文使用initialize安装方法)一、卸载CentOS7系统自带mariadb#查看系统自带的Mariadb[root@NIWAY-190~]#rpm-qa|grepmariadbmariadb-libs-5.5.68-1.el7.x86_64#卸载系统自带的Mariadb[root@NIWAY-190~]#rpm-e--nodepsmariadb-libs-5.5.68-......
  • 阿里云centos Can't connect to MySQL server on ':3306' (61)
    Can'tconnecttoMySQLserveron':3306'(61) /etc/mysql/my.cnf修改bind-address也不行mysql给root远程授权也不行阿里云安全组也添加了3306最后发现是防火墙问题解决办法firewall-cmd--zone=public--permanent--add-service=mysqlsystemctlrestartfirewalld ......
  • mysql字符串类型面试题
    mysql有哪些字符串类型?MySQL中有以下几种常见的字符串类型:CHAR:固定长度字符串,最多可以存储255个字符。VARCHAR:可变长度字符串,最多可以存储65535个字符。TEXT:用于存储较长的文本字符串,最多可以存储65535个字符。TINYTEXT:用于存储非常短的文本字符串,最多可以......
  • docker部署mysql服务
    1:拉取镜像dockerpullmysql2:验证拉镜像成功dockerimages3:创建目录mkdir-p/mysql/data/mysql/logs/mysql/confcd/mysql/conftouchmy.cnf4:创建运行容器dockerrun-p3306:3306--namemysql-v/mysql/conf:/etc/mysql/conf.d-v/mysql/logs:/logs-v/mysql......
  • CentOS7中安装Mysql8并配置远程连接和修改密码等
    场景使用Vmware等虚拟机软件搭建CentOS7系统,需要在其上安装Mysql8版本数据库。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、去mysql官网手动下载rpm包并上传到服务器,或者直接通过wget进行下载wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-......
  • docker mysql root 外网无法登录
    如何实现“dockermysqlroot外网无法登录”整体流程下面是实现“dockermysqlroot外网无法登录”的步骤。我们将使用Docker来创建一个MySQL容器,并配置使得root用户无法从外部访问。安装Docker:首先需要在你的机器上安装Docker,可以参考官方文档或者使用适合你操作系统的安装......
  • django框架安装mysql
    Django框架安装MySQLMySQL是一种常见的关系型数据库管理系统,广泛用于开发Web应用程序。Django框架是一个高效、灵活的PythonWeb框架,它提供了与多种数据库管理系统集成的能力。本文将介绍如何在Django框架中安装和配置MySQL数据库。步骤一:安装MySQL首先,我们需要在本地机器上安装......