我不允许使用子查询或任何类型的临时表作为答案的一部分,此查询是否使用其中任何一个?
SELECT DISTINCT item_no, avg_price
FROM Prices
NATURAL JOIN (SELECT AVG(totalamount) avg_price FROM Prices GROUP BY price) av
WHERE sum > aurnover ORDER BY avg_price DESC , branch;
答案 0 :(得分:0)
您在这些行上使用了两个子查询:
NATURAL JOIN (SELECT branch, AVG(totalamount) avg_price FROM Prices GROUP BY branch) av
NATURAL JOIN (SELECT item_no,branch, SUM(totalamount) sum FROM Prices GROUP BY branch, table_no) su
答案 1 :(得分:0)
好吧,你肯定有子查询(你可以清楚地看到嵌套的SELECT调用)。
您可能需要检查EXPLAIN的输出(只是将EXPLAIN附加到数据库的查询的开头),以确定它是否会生成临时表。在“额外”列中查找“使用临时”文本。
答案 2 :(得分:0)
您拥有的是派生表。
派生表类似于从视图中选择
考虑一下:
SELECT
*
FROM (SELECT * FROM TABLEA) A
如果您创建了一个表,那么您从外部选择的表是从内部选择中派生的 请注意,作为派生表,select只会运行一次
这是一个子查询的示例,它将为每个tableA Record
运行一次Select
(Select ID from TABLEB WHERE tableB.Code = TableA.Code) AS TableBID
FROM TableA
这也是一个子查询
Select
*
FROM TableA
Where TableA.Code IN (Select TABLEB.Code From TableB)
Subquerys通常用于Where子句和列中,但可能会导致严重的性能问题。