SQL错误代码1366第88163行的整数值不正确

时间:2016-11-26 17:28:01

标签: mysql sql

我试图进行以下查询

INSERT INTO 'table_1'(column_1)  
    SELECT DISTINCT 'column 2'  
    FROM other_schema.table2;  

这两列的字段都设置为INT(255),但我收到以下错误:

"错误代码:1366。错误的整数值:' column2'对于列'列2'在第88163行"

我甚至去检查了各行,但字段是一个数字(确切地说是5800)。

我做了一些修补,似乎如果我试图限制选择,它总是在不正确值的上限之后立即指责该行。

3 个答案:

答案 0 :(得分:0)

我觉得table2(column2)不是一个数字。你可能认为这是出于某种原因,但事实并非如此。

但是,table1(column1) 是一个数字。因此,解决此问题的一种方法是使用静默转换。也就是说,将值转换为数字,但不会发生错误。 MySQL使用+ 0执行此操作:

INSERT INTO table1(column1)  
    SELECT DISTINCT (column2 + 0) 
    FROM other_schema.table2; 

我建议添加where (column2 + 0) <> 0,假设您从未期望此列为0。

我还应该注意到你不知道insert的88,163行是什么。这发生在distinct之后,所以它不太可能是表中标识为88,168的行。

答案 1 :(得分:0)

您当前编写查询的方式是您尝试将INSERT字符串添加到整数列中。当你这样做

SELECT DISTINCT 'column2'

您正在选择文字字符串'column2',而不是该列中的值。我会取消引用您的表和列的引用:

INSERT INTO table SELECT DISTINCT column2 FROM ...

答案 2 :(得分:0)

如果你在'第2列'周围使用单引号,sql会将其解释为字符串,你需要删除引号,或者如果表名有空格则添加反引号

SELECT DISTINCT `column 2`