2016-11-26 18 views
0

私は、これらの列の両方INT(255)に設定し、それぞれの分野を持っている、そしてまだ私は次のエラーを取得する次のクエリSQLエラーコード1366が正しくない整数値88163

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

をやろうとしています:

「エラーコード:1366誤った整数値:列 『COLUMN2』の 『column2の』行88163で」

私も行って、個々の行をチェックしますが、フィールドには番号(5800がためにあります正確)。

私はいくつかの微妙なやり直しをしましたが、選択を制限しようとすると、不正確な値の上限の直後に行を非難しているようです。

+0

'int(255)'は実際にはMySQLの整数には意味がありません。何をそこに保管しようとしていますか? –

+0

コードのように一重引用符があると、コードはコンパイルに失敗し、実行されません。元の編集と同じように、それらを削除する必要があります。 –

答えて

0

現在、クエリを書いた方法は、INSERTに整数列に文字列を入力しようとしています。あなたは

SELECT DISTINCT 'column2'

を行うと、あなたは文字列リテラル'column2'はなく、その列の値を選択しています。私はあなたのテーブルと列への参照をUNQUOTEます:

INSERT INTO table SELECT DISTINCT column2 FROM ...

+0

問題は、カラムの名前に空白が含まれているため、あなたが言ったように実行しようとするとエラー1064になります。 – BurningBagel

+0

この問題に対する解決策がある別の答えがあります:列/テーブル名をバッククォートでエスケープする '。 –

0

table2(column2)は数字ではありません。あなたはそれが何らかの理由であると思うかもしれませんが、そうではありません。

ただし、table1(column1)です。したがって、これを解決する1つの方法は、サイレント変換を使用することです。つまり、値を数値に変換しますが、エラーは発生しません。 MySQLは+ 0でこれを行います。

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

私はあなたがこの列の0を期待することはありませんと仮定して、where (column2 + 0) <> 0を追加することを示唆しています。

insertの行数が88,163であることはわかりません。これはdistinctの後に行われるため、表の88,168番目の行である可能性は非常に低いです。

0

あなたは周りの単一引用符「列2」文字列として、あなたがあれば、 `引用符を削除するか、バッククォートを追加する必要があることを解釈するSQLを使用している場合テーブル名に空白が含まれています

SELECT DISTINCT `column 2` 
関連する問題