今天需要将一个表的数据经过筛选后插入另一个表。首先先写查询语句:
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语句后的条件要写符合它类型的,不然又不走索引,又会出一堆坑)
5712



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



