2016-06-18 138 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]>