SQL减去

在处理数值或日期数据集时,最常见和最流行的操作之一是确定两个数值之间的差或减。

在SQL中,减法允许我们检索在一个集合中存在但在另一个集合中不存在的数据。这在子查询上起到某种否定的作用。一些常见的用法包括定位两个数据集之间的差异、确定缺失的记录、数据比较或定位数据集版本之间的更改。

在本教程中,我们将学习如何使用SQL减去功能,并学习它如何在使用关系数据库时帮助我们。

SQL减去

SQL数据库中的减法操作可能因数据库引擎而异。例如,我们可以在Oracle中使用MINUS操作符来实现这一点。我们可以在SQL Server中使用EXCEPT操作符。而我们在MySQL和PostgreSQL中使用NOT IN操作符。

在本教程中,我们将重点关注MySQL和PostgreSQL都支持的NOT IN操作符。

下面是MySQL中NOT IN操作符的基本语法:

SELECT column1, column2,…


从表1


WHERE column1 NOT IN (SELECT column1 FROM table2);

在给定的示例语法中,我们从一个select语句开始,并定义我们希望从表中选择的列。

接下来,使用FROM关键字设置希望从中选择数据的源表。我们还引入了WHERE子句,它允许我们根据特定条件过滤结果。

这里我们引入了NOT IN操作符,它告诉数据库我们希望从结果中减去或删除符合特定条件的记录。

示例:查找丢失的记录

SQL减法的常见任务之一是定位丢失的记录。假设我们有两个表:一个存储所有员工,另一个存储以前的员工。

假设我们希望找到在公司中仍然活跃的员工。我们可以使用如下查询所示的SQL减法操作:

创建表employees


id INT主键AUTO_INCREMENT;


名字VARCHAR (50)


);



删除表如果存在former_employees;



创建表former_employees


id INT主键AUTO_INCREMENT;


名字VARCHAR (50)


);



INSERT INTO employees (name)



(Arthur年代”),


('爱丽丝K '),


(“约翰逊”);



插入former_employees(名称)



('布朗问'),


('爱丽丝K '),


(Michael R);



SELECT id, name


从员工


SELECT id FROM former_employees;

在这个查询中,我们使用NOT In操作符从“employee”表中减去存在于前“employee”表中的ID值。

结论

在本教程中,我们介绍了MySQL和PostgreSQL都支持的使用NOT In操作符的SQL减法的基础知识。