고유 한 (TRAN_ID, CMTE_ID) 쌍이있는 테이블 t1의 행을 찾아야합니다. 여기서 TRAN_ID 및 CMTE_ID는 두 개의 열입니다. 그런 다음이 행을 uniques
테이블에 삽입하고 싶습니다.MySQL : MyISAM 테이블에서 고유 한 열 값을 가진 행을 찾는 방법은 무엇입니까?
테이블 uniques
은 중복 쌍을 포함하는 것으로 보입니다.
참고 : 테이블 t1은 InnoDb 엔진을 사용하여 생성 된 다음 MyISAM 엔진을 사용하여 그룹화 및 조인 작업의 속도를 높이기 위해 업데이트되었습니다. t1에는 1 억 3 천만 행이 있습니다. 나는 uniques
고유와 행 (TRAN_ID로 채워 기대
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;
을이 시점에서 :
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
에 삽입 쿼리를 실행하고 :
여기 내 생성 쿼리 CMTE_ID) 쌍으로 구성됩니다. 그러나, 내가 실행할 때
SELECT * FROM uniques
GROUP BY TRAN_ID,CMTE_ID
having count(*) > 1;
나는 긴 열의 목록을 얻는다. 무슨 일이야?
+1 그는 'uniques' 테이블에서 중복을 얻을 수있는 유일한 방법은 테이블에 이미 데이터가있을 때 데이터를 삽입한다는 것입니다. –
위대한 의견에 감사드립니다. 나는 고치기를 시도하고보고 할 것이다. – navidoo
그게 실제로 문제가되었습니다. 도와 주셔서 감사합니다! – navidoo