gpt4 book ai didi

mysql - 不应该@prev <> (@prev := Score) always be False?

转载 作者:行者123 更新时间:2023-11-29 02:54:33 25 4
gpt4 key购买 nike

我有一个名为 Scores 的表:

mysql> select * from Scores;
+------+-------+
| Id | Score |
+------+-------+
| 1 | 3.5 |
| 2 | 3.65 |
| 3 | 4 |
| 4 | 3.85 |
| 5 | 4 |
| 6 | 3.65 |
+------+-------+
6 rows in set (0.00 sec)

执行以下SQL:

SELECT
Score,
@prev <> (@prev := Score) Res
FROM
Scores,
(SELECT @prev := -1) init
ORDER BY Score desc

得到结果:

+-------+------+
| Score | Res |
+-------+------+
| 4 | 1 |
| 4 | 0 |
| 3.85 | 1 |
| 3.65 | 1 |
| 3.65 | 0 |
| 3.5 | 1 |
+-------+------+
6 rows in set (0.00 sec)

注意这部分@prev <> (@prev := Score) , 我分配了 Score@prev , 所以 @prev应该总是等于 (@prev := Score) (就像 @prev 应该总是等于 @prev ),所以 @prev <> (@prev := Score) 的结果应该总是0,为什么结果集中有一些1?

最佳答案

部分@prev <> (@prev := Score)从左到右解析,所以第一个 @prev仍然有它以前的值,因为这是预期的,只有这样它才会被赋予新的值。

关于mysql - 不应该@prev <> (@prev := Score) always be False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32073925/

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