18、MINUS 找出两个 SELECT 语句结果集之间的差集

1、MINUS 运算符

用于返回在第一个查询结果中存在,但在第二个查询结果中不存在的行

  • 必须 所有 SELECT 出的列组合都不在第二结果集中才保留。
  • MySQL 不支持 MINUSEXCEPT
-- Oracle 风格:
SELECT column_list FROM table1
MINUS
SELECT column_list FROM table2;

-- 标准 SQL / PostgreSQL / SQL Server 风格:
SELECT column_list FROM table1
EXCEPT
SELECT column_list FROM table2;
  • 列数必须相同:所有 SELECT 语句必须拥有相同数量的列

  • 数据类型必须兼容:对应列的数据类型必须相似

  • 列的顺序必须一致:各 SELECT 语句中列的顺序必须对应

  • 列名以第一个查询为准:结果集的列名来自第一个 SELECT 语句,

  • 自动去重:结果集中不包含重复行

FullTime_Employees

EmployeeIDName
1 John Doe
2 Jane Smith
3 Mike Brown

ProjectA_Team

MemberIDMemberName
1 John Doe
4 Sarah Chen
 语句
-- 找出 是全职员工但不在项目A团队中的人
SELECT EmployeeID, Name FROM FullTime_Employees
MINUS
SELECT MemberID, MemberName FROM ProjectA_Team;

结果:

EmployeeIDName
2 Jane Smith
3 Mike Brown

✅ 因为 John Doe 同时出现在两个表中,被排除;Sarah Chen 不在全职员工中,不影响结果。

 

posted @ 2025-11-19 15:39  chao_xiong  阅读(5)  评论(0)    收藏  举报