0

次のクエリでテーブルを更新しようとしています。

UPDATE test.t1
SET obrigatorios = (SELECT quantidade FROM test.tcur WHERE tipo = 3)
WHERE perfil IN (7, 11);

またはこのクエリは、同じことを行う必要があります:

UPDATE test.t1 a, test.tcur b
SET a.obrigatorios = b.quantidade
WHERE a.perfil IN (7, 11)
AND b.tipo = 3;

テーブルtcurの構造は次のとおりです。

CREATE TABLE `tcur` (\
`quantidade` int(11) default NULL,\
`tipo` int(11) default NULL,\
`descritivo` varchar(12) default NULL\
) ENGINE=MyISAM DEFAULT CHARSET=latin1

テーブルt1は次のようになります。

CREATE TABLE `t1` (\
`qtd` bigint(20) NOT NULL default '0',\
`qtd_vt_disp` int(11) NOT NULL default '0',\
`perfil` binary(11) default NULL,\
`obrigatorios` int(11) NOT NULL default '0'\
) ENGINE=MyISAM DEFAULT CHARSET=latin1

切り捨てられたdoubleについて数万のエラー/警告1292が発生しています。問題はどこだ?「誤ったDOUBLE値を切り捨てました」

4

2 に答える 2

0

このエラーは、エンジンがデータ型を変換する必要があり、同じサイズではないために精度が低下する場合に発生します。

この特定のケースでは、フィールドのデータ型perfilはバイナリであり、intである必要があります。

同じ種類の警告「切り捨てられた不正なDOUBLE値」が発生した場合は、データ型が一致しないものを探してください。

于 2013-02-14T15:25:21.950 に答える
0

価値があるのは、同様の問題が発生したとき、データ型が問題ではないことがわかりました。実際には、MySQL UPDATE ステートメントの構成でした。手動で更新できる場合は、MySQL ワークベンチを介して手動で変更を加えてから、ワークベンチが必要なステートメントをどのように構築するかを調べます。

于 2013-07-03T12:43:23.843 に答える