MySQL 中的 MINUS 是一个集合操作符,用于从第一个查询的结果中减去第二个查询的结果。它类似于其他数据库中的 EXCEPT 或 SET MINUS 操作。MINUS 操作符返回第一个查询中存在但不在第二个查询中存在的所有行。
使用 MINUS 的基本语法如下:
SELECT column1, column2, ...
FROM table1
MINUS
SELECT column1, column2, ...
FROM table2;这里,table1 中的所有行,如果 table2 中也有相同的行,那么这些行将不会出现在最终结果中。
示例:
假设有两个表 orders 和 refunds,我们想要找出所有已经下单但尚未退款的订单:
SELECT order_id
FROM orders
MINUS
SELECT order_id
FROM refunds;这个查询将返回 orders 表中所有 order_id,这些 order_id 在 refunds 表中没有对应的记录。
注意事项:
- 使用
MINUS时,两个查询选择的列数必须相同,并且数据类型兼容。 - 两个查询中的结果集必须能够进行比较,也就是说,它们的列顺序和数据类型需要一致。
MINUS操作符不支持WHERE子句,但是可以在每个子查询中使用WHERE来过滤结果。MINUS操作符在某些情况下可能不如NOT EXISTS或LEFT JOIN效率高,特别是在处理大量数据时。
如果你需要更复杂的查询或者想要在 MINUS 中使用条件过滤,你可能需要考虑使用 LEFT JOIN 或 NOT EXISTS 子句来替代。



苏公网安备32021302001419号