【问题标题】:Mysql complex nested view valuesMysql复杂的嵌套视图值
【发布时间】:2021-02-05 07:29:44
【问题描述】:

我将这些值放在一个表格中

我的表

+------------------+----------+-------- ---------+ |字段1 |字段2 |字段3 | +------------------+----------+-------- ---------+ | 1 | 10 | 0 | | 1 | 20 | 0 | | 2 | 100 | 0 | | 2 | 200 | 0 | | 3 | | 1 | | 3 | | 2 | | 4 | | 3 | +------------------+----------+-------- ---------|

我想创建一个视图,让我得到这个结果

myview 想要的结果

+------------------+----------+-------- ---------+ |字段1 |字段2 |字段3 | +------------------+----------+-------- ---------+ | 1 | 10 | 0 | | 1 | 20 | 0 | | 2 | 100 | 0 | | 2 | 200 | 0 | | 3 | 30 | 1 | | 3 | 300 | 2 | | 4 | 330 | 3 | +------------------+----------+-------- ---------|
30  is the sum of field2 where field1=1 (value of field3)
300 is the sum of field2 where field1=2 (value of field3)
330 is the sum of field2 where field1=3 (value of field3)

如何获得 30,300 和 330 的值?

【问题讨论】:

  • 精确的 MySQL 版本?
  • 我会避免为此构建视图。它可能没有任何用处。

标签: mysql sql sum subquery sql-view


【解决方案1】:

对于 MySQL 8+ 使用

WITH RECURSIVE
cte AS ( SELECT field1, field2, field3
         FROM mytable
         WHERE field2 IS NOT NULL
       UNION ALL
         SELECT mytable.field1, cte.field2, mytable.field3
         FROM cte
         JOIN mytable ON cte.field1 = mytable.field3 )
SELECT field1, SUM(field2) field2, field3
FROM cte
GROUP BY field1, field3, CASE WHEN field3 = 0 THEN RAND() ELSE field3 END;

fiddle

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2017-04-10
    相关资源
    最近更新 更多