MySQL MINUS运算符
MINUS运算符是SQL中的一种SET操作,也包括INTERSECT、UNION和UNION ALL。 MINUS运算符返回第一个表/集合中唯一的元素,该元素在第二个表/集合中不存在 。换句话说,它会比较两个查询的结果,并产生由第一个查询获取的结果集中存在而第二个查询获取的结果集中不存在的结果行。
语法
以下是示例使用MINUS运算符的语法:
SELECT column_lists FROM table_name WHERE (condition)
MINUS
SELECT column_lists FROM table_name WHERE (condition);
注意:MySQL不支持MINUS操作符。本文将向您展示如何使用JOIN子句在MySQL中模拟MINUS查询。
以下是使用MINUS操作符的语句的规则:
- 所有SELECT语句中的列的数量和顺序必须相同。
- 两个SELECT语句中对应列的数据类型必须相同或可转换。
我们可以通过以下可视化表示来理解MINUS操作符。在这里,此操作符返回由 第一个 SELECT语句 ** 得到的结果中独特的值,而这些值在 **第二个SELECT语句的结果中找不到 :
MySQL MINUS运算符的模拟
由于 MySQL 不支持MINUS运算符。不过,我们可以使用 LEFT JOIN 子句 来模拟这个运算符。
我们可以使用以下语法来模拟MINUS运算符:
SELECT column_list FROM table1
LEFT JOIN table2 ON condition
WHERE table2.column_name IS NULL;
示例
首先,让我们创建两个表格用于演示,其结构如下:
表1结构和数据:
mysql> CREATE TABLE tab1 (
Id INT PRIMARY KEY
);
mysql> INSERT INTO tab1 VALUES (1), (2), (3), (4);
Table2 的结构和数据:
mysql> CREATE TABLE tab2 (
id INT PRIMARY KEY
);
mysql> INSERT INTO tab2 VALUES (3), (4), (5), (6);
现在,我们将使用LEFT JOIN子句执行以下查询。它给出与MINUS运算符相同的结果:
mysql> SELECT Id FROM tab1
LEFT JOIN tab2 USING (Id)
WHERE tab2.Id IS NULL;
输出:
执行上述查询后,我们应该得到以下图片作为输出: