gpt4 book ai didi

MYSQL - 自加入已经别名的查询(别名的别名?)

转载 作者:行者123 更新时间:2023-11-29 03:19:27 24 4
gpt4 key购买 nike

好吧,我的问题是:

SELECT *, 
(aliasA.avalue+aliasB.avalue) as mycustomsum

FROM (SELECT bla,bla,bla ...) as aliasA
INNER JOIN (SELECT bla,bla,bla ...) as aliasB
ON aliasA.mydate=aliasB.otherdate
order by month desc

现在我想要另一列本身但显示 12 个月前的 mycustomsum !别名的自连接不起作用!

换句话说,我的查询结果是:

2017-12 | 123
2017-11 | 456
.
.
.
2016-12 | 789
2016-11 | 321

我想:

2017-12 | 123 | 789
2017-11 | 456 | 321
.
.
.
2016-12 | 789 | null
2016-11 | 321 | null

只想逐月比较今年和去年,它只是“显示 12 行前的结果”!任何想法 ?

最佳答案

正如 aaron 在之前的评论中所说:LAG 函数是一种方式但是用mysql 5.7...没有LAG功能,所以模拟!

因此 -12 行值比较的工作解决方案是:

SET @back0=-1;
SET @back1=-1;
SET @back2=-1;
SET @back3=-1;
SET @back4=-1;
SET @back5=-1;
SET @back6=-1;
SET @back7=-1;
SET @back8=-1;
SET @back9=-1;
SET @back10=-1;
SET @back11=-1;

Select * ,
(MyvalueA-MyvalueB) as Myresult,
@back0 m0,
@back0:=@back1 m1,
@back1:=@back2 m2,
@back2:=@back3 m3,
@back3:=@back4 m4,
@back4:=@back5 m5,
@back5:=@back6 m6,
@back6:=@back7 m7,
@back7:=@back8 m8,
@back8:=@back9 m9,
@back9:=@back10 m10,
@back10:=@back11 m11,
@back11:=(MyvalueA-MyvalueB) m12

etc....

记得把原来的顺序倒过来:)

为什么这个 super 糟糕的解决方案?因为mysql变量中没有Array类型!

如果有人有其他优雅的解决方案,欢迎您

关于MYSQL - 自加入已经别名的查询(别名的别名?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47699317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com