AS在子查询中被忽略

时间:2013-04-10 01:50:58

标签: sql database

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

(Select MAX(cost) AS Cost_of_Car FROM Car_Purchase)

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

有什么想法吗?

编辑:刚才意识到我可以在我的SELECT语句中调用AS“NAME OF COLUMN”,但为什么它不接受子查询中的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)

2 个答案:

答案 0 :(得分: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子句中显示它。

答案 1 :(得分:0)

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

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)

足够且应该有效