使用MySQL服务器5.7.22时,为什么查询无法正常工作?

时间:2018-07-29 20:35:10

标签: mysql mysql-error-1064

因此,我试图找到那些销售笔记本电脑但不销售PC的制造商。

提供的关系的模式为: 产品(制造商,型号,类型), PC(型号,速度,内存,硬盘,价格), 笔记本电脑(型号,速度,内存,硬盘,屏幕,价格)和 打印机(型号,颜色,类型,价格)

我尝试过:

 (SELECT DISTINCT maker
 FROM Product P
 WHERE P.type=’Laptop’)
 EXCEPT
 (SELECT DISTINCT maker
 FROM Product P
 WHERE P.type=’PC’);

但是出现以下错误:

  

错误代码:1064。您的SQL语法有错误;检查   与您的MySQL服务器版本相对应的手册   'EXCEPT(在产品P WHERE中选择DISTINCT制造商   P.type ='PC')'在第4行

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

2 个答案:

答案 0 :(得分:1)

据我所知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’);

答案 1 :(得分:0)

如@paul所述,没有

  

在MySQL中

。 另外,根据您的数据库设计,您不需要其他子查询。

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

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