SQL子查询帮助

时间:2010-09-30 00:45:30

标签: sql

我在做家庭作业问题时遇到了麻烦。 具体来说,找到比所有笔记本电脑更快地生产PC的制造商。 我正在使用的查询是

SELECT  DISTINCT maker
From Product
Where model = (SELECT model
                        FROM PC 
                        WHERE speed > ALL (SELECT speed
                                             FROM Laptop));

但是我一直收到错误,说我的子查询返回了多行。这是我的语法错误还是我的逻辑关闭?

3 个答案:

答案 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));