我有一个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)之一
答案 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
)