2016-06-18 3 views
0

나는 데이터베이스에 약간의 문제가있어서 xls에서 regisrtos를 부과하고 반복되는 레코드를 생성하기 때문에 중복되는 레코드를 생성하는 동일한 xls를 두 개 이상로드 할 수 있습니다. 여러 열에서 ... 난이 예를 들어 1은 모든 열에서 5 같다 등록하지만, 다른 사람들이 EquipoA 또는 EquipoB 나 호라에서 차이가중복 행을 삭제 mysql이 고유하지 않습니다

id| Fecha | EquipoA | EquipoB | Categoria | Cancha | Hora | Nr_J1 | Nombre_J1 | Apellido_J1 | Nr_J2 | Nombre_J2 | Apellido_J2 
1 |Sáb 09 Abr | San Juan | Edu  | sub18  | San Juan | 15:00 | 39 | A.  | Aunchayna | 95 | S.  | Villizio 
2 |Sáb 09 Abr | San Juan | Impulso | sub16  | San Juan | 16:30 | 39 | A.  | Aunchayna | 95 | S.  | Villizio 
3 |Sáb 09 Abr | San Juan A| ISASA | sub16  | San Juan | 18:00 | 39 | A.  | Aunchayna | 95 | S.  | Villizio 
4 |Sáb 09 Abr | San Juan | ISASA | sub14  | San Juan | 19:30 | 39 | A.  | Aunchayna | 95 | S.  | Villizio 
5 |Sáb 09 Abr | San Juan | Edu  | sub18  | San Juan | 15:00 | 39 | A.  | Aunchayna | 95 | S.  | Villizio 

을 meuestro ... 그래서 나는 그들을 할 수 없습니다 고유해야 함

로그를 지우려면이 경우 5를 반복해야하고 1을 남겨 두어야합니다.내가 MySQL의에서 전문가는 아니지만 나는 그것은 당신이 필요로하는 모든 것 같아 권리 쿼리

답변

0

이 정확한 중복을 삭제합니다 (id 열 제외) :

delete t1 
from Table1 t1 
join Table1 t2 using (
    `Fecha`, 
    `EquipoA`, 
    `EquipoB`, 
    `Categoria`, 
    `Cancha`, 
    `Hora`, 
    `Nr_J1`, 
    `Nombre_J1`, 
    `Apellido_J1`, 
    `Nr_J2`, 
    `Nombre_J2`, 
    `Apellido_J2` 
) 
where t1.id > t2.id 

Demo

+0

감사를 제거하지 않는 방법'테이블의 두 테이블 별칭 t2' 있습니다. 나는 당신의 테이블 이름을'테이블 1 '이라고 부릅니다. 올바른 테이블 이름으로 바꿔야합니다. –

+0

't1'을 설명하고 –

+0

예, 타이핑 오류였습니다. 감사합니다. –

0

을 찾기 위해 매우 어려웠다는 SELECT DISTINCT입니다 :

SELECT DISTINCT <all columns except id separated by comma> FROM <table name> 
+0

나는 또한? 중복 찾을하지만 데모가 매우 잘 –

0

의 모든 쉽게 제거 할 수 중복.

ALTER IGNORE TABLE yourTable 
ADD UNIQUE KEY idx_dup 
(Fecha, EquipoA, EquipoB, Categoria, Cancha, Hora, 
Nr_J1, Nombre_J1, Apellido_J1, Nr_J2, Nombre_J2, Apellido_J); 

먼저 테이블을 저장 : 이 같은 달라야 모든 필드에를 무시하면 고유 인덱스를 추가 할 수 있습니다.

샘플

MariaDB [your_schema]> select * from orders; 
+----------+------------+-------------+-----------+---------+ 
| order_id | order_date | order_total | client_id | ship_id | 
+----------+------------+-------------+-----------+---------+ 
|  1 | 2016-03-12 |  10.00 |   1 |  1 | 
|  2 | 2016-03-14 |  20.00 |   1 |  2 | 
|  3 | 2016-04-13 |  30.00 |   1 |  2 | 
|  9 | 2016-05-20 |  10.00 |   2 |  1 | 
|  10 | 2016-06-03 |  20.00 |   2 |  2 | 
|  11 | 2016-03-12 |  10.00 |   1 |  1 | 
+----------+------------+-------------+-----------+---------+ 
6 rows in set (0.00 sec) 

MariaDB [your_schema]> ALTER IGNORE TABLE orders ADD UNIQUE KEY dup (order_date,order_total,client_id,ship_id); 
Query OK, 6 rows affected (0.29 sec) 
Records: 6 Duplicates: 1 Warnings: 0 

MariaDB [your_schema]> select * from orders; 
+----------+------------+-------------+-----------+---------+ 
| order_id | order_date | order_total | client_id | ship_id | 
+----------+------------+-------------+-----------+---------+ 
|  1 | 2016-03-12 |  10.00 |   1 |  1 | 
|  2 | 2016-03-14 |  20.00 |   1 |  2 | 
|  3 | 2016-04-13 |  30.00 |   1 |  2 | 
|  9 | 2016-05-20 |  10.00 |   2 |  1 | 
|  10 | 2016-06-03 |  20.00 |   2 |  2 | 
+----------+------------+-------------+-----------+---------+ 
5 rows in set (0.00 sec) 

MariaDB [your_schema]> 
관련 문제