gpt4 book ai didi

mysql - 想知道为什么我必须在 mysql 中分配给 session 变量?

转载 作者:行者123 更新时间:2023-12-04 03:52:46 25 4
gpt4 key购买 nike

为什么我必须分配给一个 session 变量以使其在这样的查询中具有正确的数字:

SELECT @row_number := @row_number + 1, name FROM cities;

而不是像这样的东西:

SELECT @row_number, name FROM cities;

在第二种形式中,它返回我猜是最后一行的数字。甚至可能是 COUNT(*) 的值。就好像值(value)以某种方式关闭了一样。这两个查询发生了什么?

最佳答案

你有 @row_number 变量。每当下面的 sql 命中记录时,它都会显示结果并递增 1。

SELECT @row_number := @row_number + 1, name FROM cities;

如果您使用的是 mysql 8.0+,您可以使用 row_number 窗口函数来实现相同的结果

select row_number() over (order by <pk>) rn, name from cities;

如果我们返回 SELECT @row_number, name FROM cities;,你不会递增 @row_number 这反过来总是显示相同的值,为 @row_number

PS:另请注意,您没有在查询中使用 order by 子句,这可能会导致行编号不一致。

关于mysql - 想知道为什么我必须在 mysql 中分配给 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64215761/

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