如何用sql查询删除相同的表字段



我现在很难受输入时,我有很多相同的表字段例子:

---------------------------------<br/>
| id_pr       | id_pro   | id_cat  |
<br/>---------------------------------<br/>
| 1001        | 002      | 103     |
<br/>---------------------------------<br/>
| 1002        | 003      | 104     |
<br/>---------------------------------<br/>
| 1003        | 004      | 103     |
<br/>---------------------------------<br/>

id_cat字段具有相同的数据,即103如何删除相同的103个数据字段中的一个,以及何时删除数据

--------------------
| 1003 | 004 | 103 |
--------------------

也删除了,如何输入sql查询?

你能帮我吗

您应该这样使用exists:

Delete from your_table t
Where exists
(Select 1 from your_table tt
Where t.id_cat = tt.id_cat
And t.id_par > tt.id_par);

您可以在聚合查询中使用join保留最小的id:

delete t
from t join
(select id_cat, min(id_pr) as min_id_pr
from t
group by id_cat
having count(*) > 1
) tt
on t.id_cat = tt.id_cat and t.id_pr > tt.min_id_pr

相关内容

  • 没有找到相关文章