Как удалить повторяющиеся значения, сравнивая две строки на Mysql - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть Mysql Table (TblModelosProductos), структура:

id codigo id_modelo

код может иметь повторяющиеся значения, пока id_codigo отличается

Пример:

id codigo id_modelo
1   A        1
2   A        1
3   A        1
4   B        2
5   C        2
6   A        2

в этом примере я должен удалить идентификаторы 2 и 3 и оставить только один из повторяющихся (id 1)

Ответы [ 3 ]

2 голосов
/ 16 апреля 2019

Вы можете использовать самосоединение в таблице для оператора delete:

delete t
from tblmodelosproductos t  
inner join tblmodelosproductos tt
on tt.id < t.id and tt.codigo = t.codigo and tt.id_modelo = t.id_modelo

См. demo .Результаты:

| id  | codigo | id_modelo |
| --- | ------ | --------- |
| 1   | A      | 1         |
| 4   | B      | 2         |
| 5   | C      | 2         |
| 6   | A      | 2         |
0 голосов
/ 16 апреля 2019

Вы можете использовать подзапрос, основанный на удалении NOT IN, для min id

delete from my_table 
where id not in (

  select select min(id)
  from my_table 
  group by id_model 

)
0 голосов
/ 16 апреля 2019

Это должно получить строки, которые вы хотите. Использование группы по получает эти строки с уникальные значения в двух столбцах, а функция MIN () получает самое низкое значение для id в каждом ряду строк.

SELECT
    MIN(`id`) as `id`,
    `codgigo`,
    `id_modelo`
FROM `TblModelosProductos`
GROUP BY `codgigo`, `id_modelo`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...