暂无图片
MySQL序列号查询:在版本5.x里面和8.0.25里面结果不一样
我来答
分享
余俞
2021-10-15
MySQL序列号查询:在版本5.x里面和8.0.25里面结果不一样

查询语句:

  select * from (
select(@i1:= @i1 + 1) as sort_i, name,sex,age from user ,(select   @i1:= 0) t 
) t  where age > 30

复制

5.x里面可以得到符合条件的序列号,但是在8.0.25里面得到的是 1、2、3、4、5…

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
chengang

不是 * 的问题。 是mysql 优化器改写了语句,让外层嵌套的 where age>30 自动放到了里面。优化器取消了嵌套。

可以explain 后 用 show warnings 看改写后的语句。

比如我测试的,优化器优化后就变成了

select `t`.`sort_i` AS `sort_i`,`t`.`act` AS `act`,`t`.`pagecount` AS `pagecount` from (/* select#2 */ select (@i1:=((@`i1`) + 1)) AS `sort_i`,`sys`.`test`.`act` AS `act`,`sys`.`test`.`pagecount` AS `pagecount` from `sys`.`test` where (`sys`.`test`.`pagecount` = 3)) `t`
复制
暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
余俞
升级问题到: 潜在风险
暂无图片 评论
暂无图片 有用 0
打赏 0
Uncopyrightable

好像记得mysql有对 select * 优化,不知道是否有影响;

暂无图片 评论
暂无图片 有用 1
打赏 0
余俞

原来是这样

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
里面记录的,有些IP是美国和德国的,是不是说明mysql 被远程攻击了?
回答 2
已采纳
在mysql的配置文件中添加禁用dns解析的参数: skipnameresolve
数据库MGR宕机后重启顺序异常导致的主从库数据不同步
回答 1
1.mysqlshell本身有命令启动前进行检查动作。  dba.rebootClusterFromCompleteOutage2.groupreplicationexitstat
在生产环境中已经有数据库在跑,怎么把数据拿到我的测试环境中?
回答 2
已采纳
MySQL生产环境有备份吗?有的话拿出来直接到你的测试环境执行恢复出来就行。没有的话先做一个全库备份,然后sftp下来传到测试库,source恢复出来即可。
MySQL 如果一直向一个txt文件里面写入日志数据,时间长了,会不会导致文件巨大,从而导致无法写入的情况?
回答 2
啥意思。。。没明白
为什么要在 MYSQL 中设置备份与恢复功能?
回答 1
已采纳
定期进行数据库备份,一旦发生数据损失,就可以通过备份的数据文件,及时在数据库发生故障后还原和恢复数据。造成数据损失的原因有很多,主要有以下四方面:1)存储介质损坏:人为或自然灾害导致保存数据库文件的磁
mysql命令中的-E参数应用在什么场景下,能否举个例子?
回答 1
E只是客户端查询显示的一种格式,以垂直方式显示查询的结果
请教下如何MYSQL 5.7普通表 在线 改成 分区表?
回答 1
ALTERTABLEADDPARTITION语句或则把创建新的分区表之后灌入数据
MySQL 怎么比较两个不同表内某个元素的大小?
回答 1
如果有时候需要使用mysql数据库,比较两个表中的元素是否全部相同,可以执行找出A表中不存在于B表中的数据方法一:利用notexistsselect字段from表Aawherenotexists(se
MYSQL变量不用加@吗?
回答 1
MySQL变量分为。用户定义变量,系统变量,参数变量,局部变量。不同的变量有不同的用法具体的区分与使用,你看这个官方文档就够了https://dev.mysql.com/doc/refman/8.0/
MySQL server-id 为什么不生效?
回答 7
已采纳
serverid值有最大限制,你这个配置超过最大值了,把serverid调小吧。。。。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~