使用参数创建 mysql-view
Posted
技术标签:
【中文标题】使用参数创建 mysql-view【英文标题】:Create mysql-view with parameter 【发布时间】:2013-10-03 06:28:34 【问题描述】:这是我的第一张桌子t1:
-----------------------------
| code | month | value |
-----------------------------
| 101 |august | 1 |
| 101 |September | 3 |
| 101 |November | 7 |
| 202 |august | 5 |
| 202 |September | 6 |
| 202 |November | 9 |
| 303 |august | 9 |
| 303 |September | 3 |
-----------------------------
我要创建第二个表t2(查看表)的样子
------------------------------------------
| code | month | value | value_begin |
------------------------------------------
| 101 |august | 1 |0 |
| 101 |September | 3 |1 |
| 101 |November | 7 |4 (3+1) |
| 202 |august | 5 |0 |
| 202 |September | 6 |5 |
| 202 |November | 2 |11 (6+5) |
| 303 |august | 9 |0 |
| 303 |september | 3 |9 |
-------------------------------------------
value_begin 是行上方的总和值和 value_begin,例如在第 101 行 - 11 月 value_begin 是值 3(上方)和 value_begin 1(上方)的 4。
这是否可以在视图中创建第二个表 t2?
【问题讨论】:
【参考方案1】:Here is the SQLFIddel Demo
以下是演示中的视图:
Create View V1 as
select T1.code,T1.Month,T1.Value,
sum(IFNULL(T2.value,0)) as value_begin
from Table1 T1
left join Table1 T2
On T1.code = T2.code
and month(str_to_date(substring(T1.month,1,3),'%b')) > month(str_to_date(substring(T2.month,1,3),'%b'))
Group by T1.code,T1.Month,T1.Value
Order by t1.code,month(str_to_date(substring(T1.month,1,3),'%b'))
;
不允许添加变量,因此我以前的方法没有帮助。而且您需要考虑变量,这也是不可能的。在这里,我使用了您的表格的逻辑来克服这种情况。希望这可以帮助。如果有任何疑问,请回复。
注意:我在演示中添加了几行来检查计算验证。
【讨论】:
我认为子查询不适用于 mysql-view。不过还是谢谢 @StefanusDaniel:我修改了我的解决方案。检查它并让我知道它是否不起作用以上是关于使用参数创建 mysql-view的主要内容,如果未能解决你的问题,请参考以下文章