1

仍然在这里学习 SQL ......我有一个子查询的一部分:

(Select MAX(cost) AS Cost_of_Car FROM Car_Purchase)

但它不带我的标签只是使用表中的一个,在这种情况下是“成本”

有任何想法吗?

编辑:刚刚意识到我可以在我的 SELECT 语句中调用“列名”,但是为什么它在子查询中不接受 AS?

发布完整的查询

SELECT CAR.name, Car_Purchase.cost_per_night, Car_Purchase.description
FROM Car_Purchase
JOIN CAR ON Car_Purchase.purchase_id = CAR.purchase_id
GROUP BY CAR.name, Car_Purchase.cost_per_night, Car_Purchase.description
HAVING Car_Purchase.cost = (SELECT MAX(cost) AS Cost_of_Car FROM Car_Purchase)
4

2 回答 2

1

AS关键字没有被忽略。您在where子句中使用子查询。请记住,where子句用于过滤查询结果,而不是用于显示数据。

如果你想看看AS子查询是如何工作的,试试这个:

SELECT CAR.name, Car_Purchase.cost_per_night, Car_Purchase.description, Cost_of_Car
FROM Car_Purchase 
JOIN CAR ON Car_Purchase.purchase_id = CAR.purchase_id
join (SELECT MAX(cost) AS Cost_of_Car FROM Car_Purchase) subquery
ON Car_Purchase.cost = subquery.Cost_of_Car
GROUP BY CAR.name, Car_Purchase.cost_per_night, Car_Purchase.description

在这个查询中,我将子查询放在from子句中。因此,您的查询结果现在有Cost_of_Car列,您可以在select子句中显示它。

于 2013-04-10T02:03:43.240 回答
0

事实上,正如其他人所指出的那样,由于 Max(Cost) 没有在查询的其他地方使用,因此您根本不需要别名。而且由于您在 sql 中的任何地方都没有聚合函数,因此它不需要是 group By 查询

Select cp.name, cp.Cost CostOfCar, 
     cp.cost_per_night, cp.description
From Car_Purchase cp Join Car c 
     On c.purchase_id = cp.purchase_id
Where cp.cost = (SELECT MAX(cost) FROM Car_Purchase)

足够了,应该可以工作

于 2013-04-10T02:12:22.517 回答