我需要查找表t1中具有唯一(TRAN_ID,CMTE_ID)對的行,其中TRAN_ID和CMTE_ID是兩列。然後我想將這些行插入表uniques
。MySQL:如何在MyISAM表中查找具有唯一列值的行?
問題是表uniques
似乎最終包含重複對。
注意:表t1是使用InnoDb引擎創建的,然後更新爲使用MyISAM引擎以加快分組和按連接操作。 t1有1.3億行。
這裏是我創建的查詢:
DROP TABLE IF EXISTS uniques;
CREATE TABLE `uniques` (
`CMTE_ID` varchar(9) DEFAULT '',
`TRAN_ID` varchar(32) DEFAULT '',
KEY `TRAN_INDEX` (`TRAN_ID`,`CMTE_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
然後我運行查詢和插入uniques
:
LOCK TABLES uniques write, t1 write;
INSERT INTO uniques
SELECT TRAN_ID,CMTE_ID
FROM t1
GROUP BY TRAN_ID,CMTE_ID
HAVING count(*) = 1;
UNLOCK TABLES;
在這一點上,我希望uniques
與獨特的行(TRAN_ID填充, CMTE_ID)對。但是,當我跑
SELECT * FROM uniques
GROUP BY TRAN_ID,CMTE_ID
having count(*) > 1;
我仍然得到一長串行。這是怎麼回事?
+1他唯一可以在'uniques'表中得到重複的方法是他在表中已經有數據時插入數據。 –
感謝您的評論。我正在嘗試修復並會報告。 – navidoo
確實是這個問題。謝謝您的幫助! – navidoo