2016-06-18 95 views
0

我有一个数据库的小问题,从xls收取regisrtos并可以加载两个以上vcese相同的xls生成重复记录,我不能限制它是唯一的,因为它们是重复的记录几列...我meuestro他们删除重复行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 

这是一个例子寄存器1等于5 中的所有列,但其他人在EquipoA或EquipoB或霍拉不同...... ,所以我不能让他们是唯一的

我需要清除在这种情况下重复的日志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'是你的表的两个表的别名。我不知道你的表的名字叫做Table1。您需要用正确的表名替换它。 –

+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); 

首先保存表:您可以IGNORE上必须是这样的不同的所有字段添加唯一索引。

样品

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]>