当前位置:   article > 正文

MYSQL bigint 加法运算后结果显示为科学计数的问题_mysql @rownum bigint

mysql @rownum bigint

问题描述:

最近做一个功能,实现对MYSQL数据库表数据进行同表复制插入操作,在将拷贝后的数据插入原表时,为了避免主键冲突,需要对其主键进行处理(目前是取原表最大id+伪造了一个rownum进行处理),原始主键是bigint类型的,进行运算之后变成了科学计数法,如下:

SELECT (select max(id) from test) + (@rownum:=@rownum+1) id
from (SELECT @rownum:=0) r,test where tenant_id =10000
  • 1
  • 2

在这里插入图片描述
图片中可以看出,bigint经过计算之后,类型变成了DOUBLE,值变成了科学计数样式,不是想要的结果。
在这里插入图片描述
最后解决方法:
最后发现问题出在我伪造的这个rownum,需要使用MYSQL提供的CAST函数进行转换才行,修改后为:

SELECT (SELECT MAX(id) FROM test)+ *CAST((@rownum := @rownum + 1) AS SIGNED)* id
from (SELECT @rownum:=0) r,test where tenant_id =10000
  • 1
  • 2

正确结果如下:
在这里插入图片描述

另外可以参考:https://blog.csdn.net/suyujiezhang/article/details/78759321

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/688289
推荐阅读
相关标签
  

闽ICP备14008679号