gpt4 book ai didi

mysql - 将变量重置为 0

转载 作者:行者123 更新时间:2023-11-29 03:09:17 25 4
gpt4 key购买 nike

我有一小段代码无法正常工作。给我带来麻烦的部分是:

IF( Class_Subset = @prevSub AND RegNum = @prevNum AND `DRI` >99.99 ,
@Platinum :=@Platinum + 1 ,'' )

我需要做的是告诉 @Platinum重置回 zero一旦Class_Subset , 或 RegNum不再满足条件。

有什么想法吗?

完整代码:

SELECT  
Harley.Hgt, Harley.RegNum, Harley.Callname, Harley.OLastname,
Harley.Tpe, Harley.Points, Harley.Class, Harley.Total_Points,
Harley.Title, Harley.Platinum, Harley.Silver_Purple,
Harley.Date_Earned, Harley.Judge, Harley.HostClub, Harley.DRI,
Harley.Class_Subset, Harley.IncorrectRegNum, Harley.MemNum, Harley.ID
FROM
(
SELECT
Hgt, RegNum, Callname, OLastname, Tpe, Points, Class,
Total_Points, Title, Silver_Purple, Date_Earned, Judge,
HostClub, DRI, Class_Subset, IncorrectRegNum, MemNum, ID,
IF (
Class_Subset = @prevSub
AND RegNum = @prevNum
AND `DRI` > 99.99,
@Platinum := @Platinum + 1,
0
) AS Platinum,
@prevSub := Class_Subset,
@prevNum := RegNum
FROM
Harley,
(
SELECT @Platinum := 0, @prevSub := '', @prevNum := ''
) r
ORDER BY RegNum, Class_Subset, Date_Earned
) Harley

这就是文件的样子,你可以看到为什么它需要在 RegNum 和 Subset 匹配时记住变量,但一旦它们改变就重置为 0:

sample data http://nadacforum.com/Platinum.png

最佳答案

我想我现在明白了这个问题。

正在计算 Platinum 的行集按 RegNumClass_Subset(特别是)排序,这很好,因为计算确实如此依赖那些正在排序的列。但是 IF() 条件还涉及 DRI 列,并且从您的屏幕截图中可以看出,一系列 DRI 值大于99.99 可能会在一组 (RegNum, Class_Subset) 中中断。恢复后,您需要继续使用白金值,而不是重置为 1

因此,您的@Platinum 表达式应该更复杂一些。这是更改它的一种方法:

<b>@Platinum :=</b> IF (
Class_Subset = @prevSub
AND RegNum = @prevNum
<s>AND `DRI` > 99.99,</s>
<b>@Platinum</b>,
0
) <b>+ (`DRI` > 99.99)</b> AS Platinum,

关于mysql - 将变量重置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10826912/

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