0

テーブルcars1とcars2の結合データが取り込まれるテーブルcarsがあります。スキーマは次のようになります。

 CREATE TABLE `cars` (
   `id` int(10) NOT NULL AUTO_INCREMENT,
   `uniqueid` varchar(10) NOT NULL,
   `name` varchar(20) NOT NULL
   UNIQUE KEY `uniqueid` (`uniqueid`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

ただし、テーブルの uniqueid フィールドに重複したエントリがあります。

 ID     UNIQUEID     NAME
 1      1            Mercedes
 2      2            Audi
 3      2            Chevrolet

単純な INSERT IGNORE INTO SELECT FROM ステートメントを使用して、cars1 と cars2 からそのテーブルにデータが取り込まれます。

これはどのように可能ですか?テーブルのインデックスが壊れている可能性がありますか? 次のようにして、重複する行に出くわしました。

 SELECT uniqueid, COUNT(uniqueid) FROM cars GROUP BY uniqueid HAVING(COUNT(uniqueid)>1);

どうすればその問題を解決できますか?

4

1 に答える 1

1

uniqueidフィールドのタイプはです。これは、またはVARCHAR(10)を含むことができることを意味し、これらの値はすべて同じように見えますが、同じではありません。'1''1 ''1 '

フィールドをuniqueidINT にします。そして問題は消えます。

于 2013-03-23T19:17:09.520 に答える