如何使用java从mysql db的行中删除重复项

我想使用 jdbc 删除表中的重复行。

我只是尝试在下面的代码中删除表中的所有记录

   String query="Delete from tests where product_id=20 and product_name='KINDLE001'";

有什么方法可以删除重复记录并保留表中的最后一个重复值。

就像表中有一个名为 S.NO 1,2,3 和 1,2 行的列是重复的,那么我只想删除记录 1。并保留 2、3 条唯一记录。


跃然一笑
浏览 231回答 3
3回答

绝地无双

如何攻击表中的dup的一般方法如下。1)定义唯一键列 - 我在我的例子中使用 KEY1, KEY22) 定义标识顺序的列 - 保留最高值,所有其他值都被视为dups。我用ORDER1例子create table tab asselect 1 key1, 1 key2, 1 order1 from dual union all  -- dupselect 1 key1, 1 key2, 2 order1 from dual union all  -- dupselect 1 key1, 1 key2, 3 order1 from dual union allselect 1 key1, 2 key2, 1 order1 from dual union allselect 2 key1, 1 key2, 1 order1 from dual union all  -- dupselect 2 key1, 1 key2, 2 order1 from dual union allselect 2 key1, 2 key2, 1 order1 from dual;此查询标识重复的行select KEY1, KEY2, ORDER1 from  (select tab.*,   row_number()  over (partition by key1, key2 order by order1 desc) as rn  from tab)where rn > 1      KEY1       KEY2     ORDER1---------- ---------- ----------         1          1          2          1          1          1          2          1          1并且此查询删除重复项delete from tab where (KEY1, KEY2, ORDER1) in(select KEY1, KEY2, ORDER1 from  (select tab.*,   row_number()  over (partition by key1, key2 order by order1 desc) as rn  from tab)where rn > 1)将您的表名和列名替换为TAB,KEY1, KEY2和ORDER1。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java