테이블 t1
이 있습니다. 일부 행에는 모든 열에 중복이 있습니다 (예 : id
).
t1
의 id
은 AUTO_INCREMENT이고 1MIL 개의 행이 있습니다.
t2
은 데이터가없는 새 테이블이며 id
은 AUTO_INCREMENT가 필요하지 않습니다. 아마도이 필드에 대해 새 열을 생성 할 것입니다.
t1에서 새 테이블로 복사 t2 중복 행을 필터링합니다.
Q : 내가 t2
생성 한 후, 어떻게 t2
가 중복 행
t1
에서
t2
고유 한 값으로
t1
에서 복사 할 수 있습니다
RDS
ENGINE=InnoDB
t1 - 이것은 내가 가지고있는 것입니다.
+---+-----+-----+------+-------+
|id |fname|lname|mytext|morevar|
|---|-----|-----|------|-------|
| 1 | joe | min | abc | 123 |
| 2 | joe | min | abc | 123 |
| 3 | mar | kam | def | 789 |
| 4 | kel | smi | ghi | 456 |
+------------------------------+
T2 -이 내가이 내 시도
+---+-----+-----+------+-------+
|id |fname|lname|mytext|morevar|
|---|-----|-----|------|-------|
| 1 | joe | min | abc | 123 |
| 3 | mar | kam | def | 789 |
| 4 | kel | smi | ghi | 456 |
+------------------------------+
로 끝날 싶은 것이 있습니다 만, 가지고 : Error Code: 1136. Column count doesn't match value count at row 1
INSERT INTO t2 (id,fname,lname,mytext,morevar)
SELECT DISTINCT st.mytext
FROM t1 st
WHERE st.id>0
AND st.id<=1000
예't1'은'mytext'에서 중복 된 데이터뿐만 아니라 다른 모든 열 ('id' 제외)에서도 보여줍니다. 데이터가 다를 경우 어떤 레코드를 보존해야 하는가? – eggyal
@eggyal 중복 된 부분을 확인하지 않으십니까? 't2'는 내가 끝내고 자하는 것이며, 데이터를 포함하지 않습니다. –
아니요,하지만't1'은 중복을 포함하고 있는데 왜 레코드 2보다 레코드 1을 선택했는지 확실하지 않습니다. 실제로, 열 (하지만 'mytext'와 동일) 대신 레코드 1보다 레코드 2를 선택했을 수 있습니까? – eggyal