如何删除比较MySQL上两行的重复值

时间:2019-04-16 18:38:32

标签: mysql rows

我有一个Mysql表(TblModelosProductos),结构为:

id 科迪哥 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

在此示例中,我必须删除ID 2和3,并且只保留重复的ID(ID 1)之一

3 个答案:

答案 0 :(得分:2)

您可以在表上使用自联接进行删除语句:

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         |

答案 1 :(得分:0)

这应该获得所需的行。使用group by获取带有 两列中的值都是唯一的,而MIN()函数会在每行行中获得id的最小值。

SELECT
    MIN(`id`) as `id`,
    `codgigo`,
    `id_modelo`
FROM `TblModelosProductos`
GROUP BY `codgigo`, `id_modelo`

答案 2 :(得分:0)

您可以使用基于NOT IN的删除子查询获取最小ID

delete from my_table 
where id not in (

  select select min(id)
  from my_table 
  group by id_model 

)