mysql except运算_SQL EXCEPT子句

数据库 的 SQL EXCEPT子句

SQL EXCEPT子句/操作符用于合并两个SELECT语句,并从那些没有被第二个SELECT语句返回的第一个SELECT语句返回行。这意味着EXCEPT仅返回行,在第二个SELECT语句不可用。

正如使用UNION操作,同样的规则时,使用EXCEPT操作符适用。MySQL不支持EXCEPT运算符。

语法

EXCEPT基本的语法如下:

SELECT column1 [, column2 ]

FROM table1 [, table2 ]

[WHERE condition]

EXCEPT

SELECT column1 [, column2 ]

FROM table1 [, table2 ]

[WHERE condition]

在这里,给定的条件可能是根据您的需要给定任意的表达。

例子:

考虑下面的两个表中,(a)CUSTOMERS表如下:

+----+----------+-----+-----------+----------+

| ID | NAME | AGE | ADDRESS | SALARY |

+----+----------+-----+-----------+----------+

| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |

| 2 | Khilan | 25 | Delhi | 1500.00 |

| 3 | kaushik | 23 | Kota | 2000.00 |

| 4 | Chaitali | 25 | Mumbai | 6500.00 |

| 5 | Hardik | 27 | Bhopal | 8500.00 |

| 6 | Komal | 22 | MP | 4500.00 |

| 7 | Muffy | 24 | Indore | 10000.00 |

+----+----------+-----+-----------+----------+

(b)另一个ORDERS表如下:

+-----+---------------------+-------------+--------+

|OID | DATE | CUSTOMER_ID | AMOUNT |

+-----+---------------------+-------------+--------+

| 102 | 2009-10-08 00:00:00 | 3 | 3000 |

| 100 | 2009-10-08 00:00:00 | 3 | 1500 |

| 101 | 2009-11-20 00:00:00 | 2 | 1560 |

| 103 | 2008-05-20 00:00:00 | 4 | 2060 |

+-----+---------------------+-------------+--------+

现在,让我们在SELECT语句中加入这两个表如下:

SQL> SELECT ID, NAME, AMOUNT, DATE

FROM CUSTOMERS

LEFT JOIN ORDERS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

EXCEPT

SELECT ID, NAME, AMOUNT, DATE

FROM CUSTOMERS

RIGHT JOIN ORDERS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

这将产生以下结果:

+----+---------+--------+---------------------+

| ID | NAME | AMOUNT | DATE |

+----+---------+--------+---------------------+

| 1 | Ramesh | NULL | NULL |

| 5 | Hardik | NULL | NULL |

| 6 | Komal | NULL | NULL |

| 7 | Muffy | NULL | NULL |

+----+---------+--------+---------------------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Intersect和Except是在关系型数据库常用的操作符,它们用于对两个集合进行交集和差集的计算。这两个操作在SQL语言被广泛使用,但它们并不属于标准的SQL语法,因此被称为高级值非标准化的操作。 首先,Intersect和Except操作符在SQL标准语法并不是必须的功能,因此并未被所有的数据库系统所支持,这就导致了这两个操作符只能在特定的数据库系统使用。同时,它们在不同的数据库系统的语法和运行效果可能会有所不同,这也增加了数据库开发人员的学习成本和使用难度。 其次,Intersect和Except操作符的功能在某种程度上可以通过其他SQL语句来实现,比如使用INNER JOIN和LEFT JOIN等关联操作来模拟Intersect和Except的功能。因此,在设计标准SQL语法时,并没有特别为这两个操作符进行规范化,而是更倾向于使用通用的操作符和语句来实现相关功能。 另外,Intersect和Except操作符在某种程度上也增加了数据库系统的复杂性和性能压力,特别是在处理大规模数据时,这两个操作可能会导致较高的计算成本和资源消耗。因此,一些数据库系统为了简化实现和优化性能,并没有将这两个操作符纳入标准语法范围。 综上所述,Intersect和Except操作符虽然在一些特定的数据库系统被广泛使用,但它们并不属于SQL标准语法范畴,因此被认为是高级值非标准化的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值