还在这里学习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)
答案 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)
足够且应该有效