mysql - @rownum mysql 的第一行错误

标签 mysql rownum

我正在尝试为 mysql 查询生成 rownum。 这是我的代码。

select @rownum:=@rownum+1 rowno, (`plgap_nos`.`no_id` - 1) AS `no_id`
from `plgap_nos`,
     (SELECT @rownum:=0) r
limit 0, 10

虽然一切正常,但第一排鞋的 rownum 是 1621 而不是 0。

它尝试使用不同的代码,如下所示。仍然存在同样的错误。

select COALESCE(@rownum:=@rownum+1,0) rank,
       (`cnxnifty_plgap_nos`.`no_id` - 1) AS `no_id`
from `money_database`.`cnxnifty_plgap_nos`,
     (SELECT @rownum:=0) r
limit 0, 10

看来我犯了一些我无法理解的愚蠢错误。 谁能帮忙。

其他信息 - 这就是数据的样子 -

排名     no_id
1621     0
1           7
2           18
3           21
4           33
5           37
6           45

最佳答案

我只是想澄清一下。下面的代码也有同样的问题吗?

select (@rn := @rn + 1) as rowno, (p.no_id - 1) AS no_id
from plgap_nos p cross join
     (SELECT @rn := 0) params
order by p.no_id
limit 0, 10;

select 中的变量赋值应在 from 初始化之后执行。我还没有看到 MySQL 以错误的顺序进行初始化(这将是您所看到的行为的原因之一)。

我对查询所做的更改(用交叉联接代替逗号、order by和表别名)不应影响结果集。但是,cross join 的作用域语义与 , 不同,因此 cross join 最终出现的可能性很小。解决问题。

关于mysql - @rownum mysql 的第一行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817802/

相关文章:

oracle - 连接条件中的 Rownum

phpmyadmin - MariaDB 安装后无法再登录

python - 命令 'cc' 失败,并且 mysql_config 无法在安装了 Xcode5.1 且 site.cfg 已更改的情况下安装

PHP 代码无法在页面中运行,但在 phpdmin 中运行

sql - oracle查询中的rownum问题

oracle - 从 Oracle 10g 中的表中的一组行中检索特定行的行号

PHP MariaDB while 循环在没有行时运行

php - Magento 可配置产品运行缓慢,strace 显示对/usr/share/zoneinfo 的数千次统计调用

postgresql - postgresql 中的行数