第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用java從mysql db的行中刪除重復(fù)項

如何使用java從mysql db的行中刪除重復(fù)項

躍然一笑 2021-09-29 17:50:43
我想使用 jdbc 刪除表中的重復(fù)行。我只是嘗試在下面的代碼中刪除表中的所有記錄   String query="Delete from tests where product_id=20 and product_name='KINDLE001'";有什么方法可以刪除重復(fù)記錄并保留表中的最后一個重復(fù)值。就像表中有一個名為 S.NO 1,2,3 和 1,2 行的列是重復(fù)的,那么我只想刪除記錄 1。并保留 2、3 條唯一記錄。
查看完整描述

3 回答

?
絕地?zé)o雙

TA貢獻1946條經(jīng)驗 獲得超4個贊

如何攻擊表中的dup的一般方法如下。


1)定義唯一鍵列 - 我在我的例子中使用 KEY1, KEY2


2) 定義標識順序的列 - 保留最高值,所有其他值都被視為dups。我用ORDER1


例子


create table tab as

select 1 key1, 1 key2, 1 order1 from dual union all  -- dup

select 1 key1, 1 key2, 2 order1 from dual union all  -- dup

select 1 key1, 1 key2, 3 order1 from dual union all

select 1 key1, 2 key2, 1 order1 from dual union all

select 2 key1, 1 key2, 1 order1 from dual union all  -- dup

select 2 key1, 1 key2, 2 order1 from dual union all

select 2 key1, 2 key2, 1 order1 from dual;

此查詢標識重復(fù)的行


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

并且此查詢刪除重復(fù)項


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。


查看完整回答
反對 回復(fù) 2021-09-29
  • 3 回答
  • 0 關(guān)注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號