【问题标题】:how can join a query result set with an existing table?如何将查询结果集与现有表连接?
【发布时间】:2010-04-05 03:21:01
【问题描述】:

有什么办法可以避免使用 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 

我知道这样做的一种方法是将第一个查询结果转储到临时表,然后将其与产品表连接。有没有更好的办法?

【问题讨论】:

  • 能否提供一些示例以便我们提供帮助?
  • 我正在使用带有聚合函数 (sum) 的查询来生成每个产品的总和:结果如下所示:product_name |总和(数量) product_1 | 100 个产品_2 | 200 产品_5 | 300 现在我想将上述结果加入另一个名为 products 的表中。这样我就会有这样的总结:product_name |总和(数量) product_1 | 100 个产品_2 | 200 产品_3 | 0 产品_4 | 0 产品_5 | 300 我知道这样做的一种方法是将第一个查询结果转储到临时表,然后将其与产品表连接。有没有更好的办法?

标签: sql mysql


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    你可以这样做

    select table1.productname, virtualtable.qty
    from table1 
    inner join (
      select productid, qty
      from table2
      group by productid
    ) as virtualtable on virtualtable.productid = table1.productid
    

    【讨论】:

      【解决方案3】:

      也许您正在寻找 UNION 语法? http://dev.mysql.com/doc/refman/5.0/en/union.html 更多信息会很有用。

      【讨论】:

        【解决方案4】:

        您可以在一个 select 查询中执行多个联接。这能解决你的问题吗?很难说出您的要求。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-16
          • 1970-01-01
          • 1970-01-01
          • 2021-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多