【问题标题】:Creating a VIEW in mysql在mysql中创建一个视图
【发布时间】:2012-02-21 17:31:26
【问题描述】:

我想从下表创建一个视图。该表包含许多记录,我的目标是让视图保存 A 列和 B 列的某些 TOTALS(总和),但基于不同的 WHERE 子句。目前我已经创建了两个单独的视图来跟踪我需要的总和。

我的问题是我是否可以在一个视图中而不是两个单独的视图中执行此操作。

表:用户 ID 时间列 A 列 B

我想跟踪以下两个总数:

TOTAL 1: SELECT USERID, SUM(TIME) 从表中列 A 0
总计 2:从 B 列 0

的表中选择用户 ID、总和(时间)

有没有办法在一个查询中获得这 2 个总数?

【问题讨论】:

    标签: mysql views


    【解决方案1】:
    SELECT USERID,
           SUM(CASE WHEN COLUMN_A<>0 THEN TIME ELSE 0 END) AS ColumnASum,
           SUM(CASE WHEN COLUMN_B<>0 THEN TIME ELSE 0 END) AS ColumnBSum
        FROM TABLE
        GROUP BY USERID
    

    【讨论】:

    • 这是很棒的信息。我不知道构建这样的查询!谢谢。
    【解决方案2】:

    MySQL 中的视图不能包含多个查询,但听起来您不一定需要视图。为什么不干呢

    SELECT USERID, SUM(TIME) FROM TABLE WHERE COLUMN A <> 0
    UNION
    SELECT USERID, SUM(TIME) FROM TABLE WHERE COLUMN B <> 0
    

    这不是给你你需要的吗?

    【讨论】:

    • 联合似乎在我的情况下不起作用,因为只会为时间创建一个列标题(我需要两个单独的时间总计。
    • 在这种情况下,您可能可以在 A.USERID = B.USERID 上加入这两个查询,但似乎 Joe 发布的解决方案也能满足您的需求
    • 真的!谢谢你的 2 美分!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2016-01-15
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多