有没有办法避免使用tmp表?
我正在使用带有聚合函数(sum)的查询来生成每个产品的总和: 结果如下:
product_name | sum(qty)
product_1 | 100
product_2 | 200
product_5 | 300
现在我想将上述结果加入另一个名为products的表中。 所以我将得到这样的总结:
product_name | sum(qty)
product_1 | 100
product_2 | 200
product_3 | 0
product_4 | 0
product_5 | 300
我知道这样做的一种方法是将第一个查询结果转储到临时表,然后将其与products表连接。有更好的方法吗?
答案 0 :(得分:27)
SELECT Product_Name, Total FROM ProductTable x
LEFT OUTER JOIN (SELECT SUM(qty) as Total, ProductID FROM InventoryTable
GROUP BY ProductID) y
ON x.ProductID = y.ProductID
答案 1 :(得分:7)
你可以这样做
select table1.productname, virtualtable.qty
from table1
inner join (
select productid, qty
from table2
group by productid
) as virtualtable on virtualtable.productid = table1.productid
答案 2 :(得分:3)
也许你正在寻找UNION语法? http://dev.mysql.com/doc/refman/5.0/en/union.html 更多信息会很有用。
答案 3 :(得分:1)
您可以在一个select
查询中执行多个联接。这会解决你的问题吗?很难说出你的要求。