所以,我有一个表调用顺序,由两个结果组成,结果由一个值组成。
当我执行这个查询时:
SELECT @running_total := @running_total + orders.myVal AS cumulative_sum
From orders JOIN
(SELECT @running_total := 0) r
它返回这个结果:
_____________________
|id | cumulative_sum |
|___|________________|
| 1 | 1 |
|___|________________|
| 2 | 3 |
|___|________________|
但是,当我添加 where 子句时 WHERE @running_total <= 0.5
这是
SELECT @running_total := @running_total + orders.myVal AS cumulative_sum
From orders JOIN (SELECT @running_total := 0)
WHERE @running_total <= 0.5
为什么返回相同的结果?
据我所知,它不应该返回任何结果,因为两个结果都不包含小于 0.5 的值
谢谢
最佳答案
试试这个: 我想,当您使用 @running_total <= 0.5
检查条件时此时此变量中没有分配任何值,因此它始终为 true 并返回值。请查询@running_total <= 0.2
也返回 true 并通过 >
检查你也会明白你在做什么
SELECT * FROM (@running_total := @running_total + orders.myVal AS cumulative_sum
From orders
JOIN (SELECT @running_total := 0) r) t WHERE @running_total <= 0.5
关于mysql - 累计和的 where 子句如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47921204/