今天需要将一个表的数据经过筛选后插入另一个表。首先先写查询语句:


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

注意查询类型,需要和插入类型保持一致

文档更新时间: 2023-05-27 13:32   作者:admin