如何将查询结果集与现有表连接?

时间:2010-04-05 03:21:02

标签: sql mysql

有没有办法避免使用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表连接。有更好的方法吗?

4 个答案:

答案 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查询中执行多个联接。这会解决你的问题吗?很难说出你的要求。