因此,我试图找到那些销售笔记本电脑但不销售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中带有红色下划线。
答案 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”的产品类型。这完全取决于您设计数据库的效率。