如何解决MySQL复杂的嵌套视图值
我将这些值放在表中
mytable
+------------------+---------------------+-----------------+ | field1 | field2 |field3 | +------------------+---------------------+-----------------+ | 1 | 10 | 0 | | 1 | 20 | 0 | | 2 | 100 | 0 | | 2 | 200 | 0 | | 3 | | 1 | | 3 | | 2 | | 4 | | 3 | +------------------+---------------------+-----------------|
我想创建一个视图,让我得到这个结果
我查看所需的结果
+------------------+---------------------+-----------------+ | field1 | field2 |field3 | +------------------+---------------------+-----------------+ | 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 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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。