今天需要将一个表的数据经过筛选后插入另一个表。首先先写查询语句:
select innerid from aa inner join bb on aa.id=bb.id where innerid >0
这里一查当然没啥问题,数据是那么的整齐。
接下来将数据插入到另一张表中:
INSERT INTO r (innerid)
select innerid from aa inner join bb on aa.id=bb.id where innerid >0

what??? 为啥会报这个错。
经过一番思考后突然想到mysql会有一个隐式转换,在你where语句的后面 innerid >0 相当于把这个字符型的innerid转成了double。
修改后的sql如下
INSERT INTO r (innerid)
select innerid from aa inner join bb on aa.id=bb.id where LENGTH(INNERID)>0
(所以说where语句后的条件要写符合它类型的,不然又不走索引,又会出一堆坑)
在尝试将数据从一个表筛选后插入另一个表时,遇到1292错误。问题出在MySQL对查询条件的隐式类型转换,将字符型innerid转换为DOUBLE导致。解决方案是确保WHERE语句后的条件与字段类型匹配,避免隐式转换,从而防止索引失效和错误发生。
2491

被折叠的 条评论
为什么被折叠?



