gpt4 book ai didi

mysql - 为什么 MYSQL 对 a+2=b+1=c 与 a+1 = b 和 b+1=c 返回不同的结果?

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

我编写了一个 SQL 查询来查找所有至少连续出现 3 次的数字:

| Id | 数字|

| 1 | 1 |

| 2 | 1 |

| 3 | 1 |

| 4 | 2 |

| 5 | 1 |

| 6 | 2 |

| 7 | 2 |

例如,在上面的 Logs 表中,1 是在 at 连续出现的唯一数字至少三次。

我的原始查询返回 1 和 2:

 SELECT l1.Num
FROM Logs l1, Logs l2, Logs l3
WHERE l1.Id + 2 = l2.Id + 1 = l3.Id
AND l1.Num = l2.Num = l3.Num;

+-------------------------------------------------------- --------------------------

然后我将查询更改为此(基本上我将 a+2 = b+1 = c 更改为 a + 1 = b 和 b+1 = c),它返回正确的答案:

SELECT l1.Num
FROM Logs l1, Logs l2, Logs l3
WHERE l1.Id + 1 = l2.Id AND l2.Id + 1 = l3.Id
AND l1.Num = l2.Num AND l1.Num= l3.Num;

+-------------------------------------------------------- --------------------------

这让我发疯,我不明白为什么。有人可以向我解释一下吗?提前致谢!!!!

最佳答案

好吧,让我们看一下这个查询:
其中 l1.Id + 2 = l2.Id + 1 = l3.Id
在 MySQL 中,与大多数编程语言一样,= 只是一个二元运算符,这意味着它需要左侧和右侧,如果它们相同则返回 true,否则返回 false。

在查询中,您首先将 l1.Id + 1l2.Id 进行比较,得出真值。然后,将真值与 l3.Id 进行比较。 (真值自动转换为 0/1)。这会导致不同的结果。

tl;dr: MySQL 中的 = 与数学符号中常用的 = 不同。

关于mysql - 为什么 MYSQL 对 a+2=b+1=c 与 a+1 = b 和 b+1=c 返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058161/

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