在 MySQL 视图中获取上一行的值
Posted
技术标签:
【中文标题】在 MySQL 视图中获取上一行的值【英文标题】:Get previous row's value on a MySQL view 【发布时间】:2013-12-03 14:39:16 【问题描述】:假设我有这样的事情:
mysql 表
Date | Val
2013/11/22 | 2
2013/11/23 | 4
2013/11/25 | 12
2013/11/30 | 28
2013/12/02 | 2
我需要一个查询来获取另一列“当前”行的值加上前一行的值的总和。 使用示例,结果将是这样的:
Date | Value | Total
2013/11/22 | 2 | 2
2013/11/23 | 4 | 6 <--- Because 4+2 = 6
2013/11/25 | 12 | 16
2013/11/30 | 28 | 40
2013/12/02 | 2 | 30
问题是我不能使用变量,因为我在视图中。
我该怎么做?
感谢任何帮助。
【问题讨论】:
这在 MySQL 中是不容易做到的(因为它的 SQL 功能有限) 好吧,我想我必须想办法做到这一点 是的,这并不容易,但有可能。现在我通过代理,我不知道为什么这里的人阻止了 sqlfiddle 站点。当我在家时,如果没有人回答你,我会尝试。 @JorgeCampos 好的,非常感谢! @Amber Ahah 是的!我的错,我数了 16 + 28。 【参考方案1】:SELECT
t.Date,
t.Val,
COALESCE((SELECT Val FROM Table1 sq WHERE sq.Date < t.Date ORDER BY sq.Date DESC LIMIT 1), 0) + t.Val AS whatever
FROM
Table1 t
ORDER BY t.Date
在sqlfiddle 中实时查看它的工作情况
【讨论】:
+1 很好的答案,但是你有两个相等的日期呢(例如 2013/11/25 值 10 和 2013/11/25 值 11)。这只是我在考虑这个问题的答案时想到的一件事:) 好吧,当多个值可能出现在同一日期时,数据库工程师当然必须处理它并使用 auto_increment 列或其他东西来代替日期列。反正OP没有提到这个潜在的问题,所以我不把它当成问题。 我已经创建了我的 API,因此我不能在同一天有多个值。不管怎样,谢谢大家的关心:)以上是关于在 MySQL 视图中获取上一行的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在firebase(swift)中获取子节点的值,并将其显示在视图控制器的标签中