我在做家庭作业问题时遇到了麻烦。 具体来说,找到比所有笔记本电脑更快地生产PC的制造商。 我正在使用的查询是
SELECT DISTINCT maker
From Product
Where model = (SELECT model
FROM PC
WHERE speed > ALL (SELECT speed
FROM Laptop));
但是我一直收到错误,说我的子查询返回了多行。这是我的语法错误还是我的逻辑关闭?
答案 0 :(得分:1)
您的逻辑似乎已关闭。
此过滤子句使用子查询:
Where model = (SELECT model FROM PC WHERE speed > ALL (SELECT speed FROM Laptop));
必须返回一行才能生效。
你可以尝试:
Where model IN (SELECT model FROM PC WHERE speed > ALL (SELECT speed FROM Laptop));
答案 1 :(得分:1)
实际上你也可以使用 JOIN ,使用Join取决于你要做什么。
例如,我想找到比所有笔记本电脑和PC的型号更快地生产PC的制造商:
SELECT product.maker , max(product.speed)
From product join pc on product.model = pc.model
Group by product.maker
Having product.speed = max(product.speed)
我认为它应该有用!
答案 2 :(得分:0)
尝试 -
SELECT DISTINCT maker
From Product
Where model = (SELECT DISTINCT model
FROM PC
WHERE speed > (SELECT MAX(speed)
FROM Laptop));