gpt4 book ai didi

Mysql如何在更新中使用局部变量

转载 作者:行者123 更新时间:2023-11-29 18:23:06 27 4
gpt4 key购买 nike

我有一个查询在一个大表上运行,因此我需要它尽可能优化地运行,并且希望清理这个特定的方程。

SET points = IF( 
(20 - ABS(pick.guessed_rank - team.rank)) < 0,
0,
(20 - ABS(pick.guessed_rank - team.rank))
)

我如何改进这一点以将 ABS(pick.guess_rank - team.rank) 保存到变量中,以便我的更新看起来更像:

@diff = ABS(pick.guess_rank - team.rank;
SET points = IF(@diff < 0, 0, @diff);

或者也许有比使用 if 语句更好的解决方案,但在这种情况下如何使用变量的示例仍然会有所帮助。

最佳答案

您想要 GREATEST 函数在逻辑上执行相同的操作:

SET @points = GREATEST(20 - ABS(pick.guessed_rank - team.rank), 0);

或更具体地说

SET @diff = 20 - ABS(pick.guessed_rank - team.rank);
SET @points = GREATEST(@diff,0);

还有额外奖励积分

SET @min_margin=20;
SET @diff = ABS(pick.guessed_rank - team.rank);
SET @points_diff = GREATEST(@diff,@min_margin);

--- 编辑 ---

在直接 SQL CLI 中,我必须对每个变量使用 @。我相信存储过程

有区别

关于Mysql如何在更新中使用局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46411091/

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