MySQL MINUS-差集 [猿教程]

https://yuanjiaoc.com/tutorial/article/10143

在本教程中,您将了解 SQL MINUS 运算符以及如何在 MySQL 中使用 join 模拟 MINUS

请注意,MySQL 不支持 MINUS 运算符。本教程向您展示如何使用连接子句在 MySQL 中模拟 MINUS 运算符。

SQL MINUS 运算符简介

MINUS 运算符是 SQL 标准中的三个集合运算符之一,包括 UNIONINTERSECT 和 MINUS

下面说明了 MINUS 运算符的语法:

SELECT select_list1 
FROM table_name1
MINUS 
SELECT select_list2 
FROM table_name2;

使用 MINUS 运算符的查询的基本规则如下:

  • select_list1 和 select_list2 中列的数量和顺序必须相同。
  • 两个查询中对应列的数据类型必须兼容。

假设我们有两个表 t1 和 t2,其结构和数据如下:

CREATE TABLE t1 (
    id INT PRIMARY KEY
);

CREATE TABLE t2 (
    id INT PRIMARY KEY
);

INSERT INTO t1 VALUES (1),(2),(3);
INSERT INTO t2 VALUES (2),(3),(4);

以下查询从 t1 表的查询返回不同的值,这些值在 t2 表的查询结果中未找到。

SELECT id FROM t1
MINUS
SELECT id FROM t2; 

下面的维恩图说明了 MINUS 操作:

请注意,某些数据库系统(例如 Microsoft SQL Server 和 PostgreSQL)使用 EXCEPT 而不是 MINUS。它们具有相同的功能。

MySQL MINUS 运算符模拟

不幸的是,MySQL 不支持 MINUS 运算符。但是,您可以使用 join 来模拟它。

要模拟两个查询的 MINUS,请使用以下语法:

SELECT 
    select_list
FROM 
    table1
LEFT JOIN table2 
    ON join_predicate
WHERE 
    table2.column_name IS NULL; 

例如,以下查询使用 LEFT JOIN 子句返回与 MINUS 运算符相同的结果:

SELECT 
    id
FROM
    t1
LEFT JOIN
    t2 USING (id)
WHERE
    t2.id IS NULL;

在本教程中,您了解了 SQL MINUS 运算符以及如何使用 LEFT JOIN 子句在 MySQL 中模拟 MINUS 运算符。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值