2016-06-18 2 views
0

У меня есть небольшая проблема с базой данных, заряжайте regisrtos от xls и можете загружать более двух 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 или Hora ... поэтому я не могу сделать их быть уникальным

Мне нужно очистить журнал, в этом случае повторяется 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

благодаря демка очень хорошо объяснил –

+0

't1' и' t2' являются псевдонимы таблиц вашей таблицы. Я не знаю названия вашей таблицы, так называемой «Table1». Вам нужно заменить его на правильное имя таблицы. –

+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]> 
Смежные вопросы