为什么在使用mysql server 5.7.22时,Exception不能用于我的查询?

为什么在使用mysql server 5.7.22时,Exception不能用于我的查询?,mysql,mysql-error-1064,Mysql,Mysql Error 1064,因此,我正在努力寻找那些销售笔记本电脑而不是个人电脑的制造商 提供的关系模式包括: 产品制造商、型号、类型、, PC型号、速度、ram、hdisk、价格、, 笔记本电脑型号、速度、ram、hdisk、屏幕、价格和 打印机型号、颜色、类型、价格 我试过: (SELECT DISTINCT maker FROM Product P WHERE P.type=’Laptop’) EXCEPT (SELECT DISTINCT maker FROM Product P WHERE P.ty

因此,我正在努力寻找那些销售笔记本电脑而不是个人电脑的制造商

提供的关系模式包括: 产品制造商、型号、类型、, PC型号、速度、ram、hdisk、价格、, 笔记本电脑型号、速度、ram、hdisk、屏幕、价格和 打印机型号、颜色、类型、价格

我试过:

 (SELECT DISTINCT maker
 FROM Product P
 WHERE P.type=’Laptop’)
 EXCEPT
 (SELECT DISTINCT maker
 FROM Product P
 WHERE P.type=’PC’);
但我得到了以下错误:

错误代码:1064。您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near'的语法,但从产品P中选择不同的制造商除外,其中 第4行的P.type='PC'


我做错了什么?在MySQL Workbench中,查询中的EXCEPT带有红色下划线。

据我所知,MySQL不支持EXCEPT语法。尝试使用NOT IN或LEFT JOIN:

(SELECT DISTINCT maker
FROM Product P
WHERE P.type=’Laptop’)
where marker not in
(SELECT DISTINCT maker
FROM Product P
WHERE P.type=’PC’);

正如@paul所提到的,没有

除了

在MySQL中。 此外,根据数据库设计,您不需要其他子查询

SELECT DISTINCT maker FROM Product P WHERE P.type=’Laptop’

这将自动仅选择仅为“笔记本电脑”而非“PC”的产品类型。这完全取决于您设计数据库的效率。

除了MySQL之外,没有其他功能。尝试NOT EXISTS或NOT IN子查询。当我尝试将NOT EXISTS或NOT IN替换为EXCEPT时,NOT带红色下划线,因此我无法运行任何一个查询。我使用EXCEPT是因为它应该等同于差异,或者至少曾经是。现在有人知道什么是用来制造差异的吗?正如保罗所写的:使用不存在或不存在。