【问题标题】:Join results of two select statements连接两个 select 语句的结果
【发布时间】:2009-11-29 05:56:53
【问题描述】:

我有一张表作为事务日志:

Date  Action  Qty
11-23  ADD     1
11-23  REMOVE  2
11-23  ADD     3

我想要一个查询来分别汇总给定日期的所有 ADD 和所有 REMOVE。

这些选择语句中的每一个都可以正常工作,但它们不能被加入:

select date, sum(qty) as Added from table where action='Add' and date='11-23'

natural join

select date, sum(qty) as Removed from table where action='Remove' and date='11-23'

我可以将每个 select 语句的结果存储到一个表中,然后加入这些表吗?有没有办法一起避免这一切?

谢谢- 乔纳森

【问题讨论】:

    标签: mysql inner-join


    【解决方案1】:

    看看UNION语法,如果你真的想将多个查询的结果集合二为一:

    http://dev.mysql.com/doc/refman/5.0/en/union.html


    不过,在这种情况下,请查看GROUP BY

    您可以在Date, Action 上进行分组,因此每次操作每天产生一条记录,SUM() 可以为您提供数量。

    例如:

    select 
      date,
      action, 
      sum(qty) AS Quantity 
    from 
      table 
    group by
      date, action
    

    将导致:

    11-23 | ADD    | 10
    11-23 | REMOVE |  5
    11-24 | ADD    |  4
    11-24 | REMOVE |  3
    

    【讨论】:

      【解决方案2】:

      如果您展示了您真正想要的输出,这将有所帮助。 从你的“添加”和“删除”我猜你想要一个工会,但可能是这样的:

      select
          date,
          sum(if(action='ADD',qty,0)) as Added,
          sum(if(action='REMOVE',qty,0)) as Removed
      from `table`
      where date='11-23';
      

      (如果您选择多个日期,则使用 group by date。)

      【讨论】:

        猜你喜欢
        • 2021-03-25
        • 2012-05-19
        • 2016-09-18
        • 2019-08-30
        • 2011-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多