所以我对子查询有疑问,我需要显示三件事: 高于书籍平均价格的书籍,这些书籍的标题以及显示数据库中所有书籍平均价格的列。 我尝试了以下方法,但是这几乎满足了我的所有需求。我仍然需要所有书籍的平均水平。我的问题是第二段代码。
SELECT title_name, price
FROM titles
WHERE price >(SELECT AVG(price) Average_Price FROM titles);
第二个片段,我尝试在其中查找以下所有书籍的平均值。
SELECT AVG(price),title_name, price
FROM titles
WHERE price >(SELECT AVG(price) Average_Price FROM titles);
我想我在这里遗漏了一些非常简单的东西,我只是不能完全动手。我想要所有书籍的平均值,因此我觉得这应该是初始声明的一部分,但是当我在此处添加它时,它的计算不正确..我相信这是在计算所有书籍的平均值以上的所有书籍的平均值书..如果有人可以给我一些指导,我什至不一定需要给我答案。.也许只是指向正确的方向。 哦,注意到我们使用phpmyAdmin作为工作空间可能会有所帮助。感谢所有的帮助。 =]
答案 0 :(得分:1)
将子查询放在FROM
子句中!
SELECT t.title_name, t.price, a.Average_Price
FROM titles t CROSS JOIN
(SELECT AVG(price) as Average_Price FROM titles) a
WHERE t.price > a.Average_Price;
通过这种方式,子查询仅被评估一次,一旦数据库变大,这可能是一个非常重要的考虑因素。
答案 1 :(得分:0)
尝试类似
SELECT (select avg(price) from titles) as AvgPrice ,title_name, price
from titles
where price > (select avg(price) average_price from titles)
您的选择的主要部分受到where子句的限制,因此您选择的商品的平均价格高于平均价格。嵌套选择可以解决此问题(尽管我主要使用Oracle,但我认为这也应该适用于MySQL)。