gpt4 book ai didi

python - 删除sqlite中的重复行?

转载 作者:行者123 更新时间:2023-11-28 21:56:42 24 4
gpt4 key购买 nike

如何获取具有相同条目的条目?我的桌面播放器有两个重复的方面(名称,wowp_id)。如何合并它们?

我一直在寻找相关问题。下面的代码是建立在我找到的答案之上的。流程运行良好,但仍然存在重复项。我希望没有重复的名称。如果多个 name 有不同的 wowp_id 我宁愿删除 wowp_id 并只保留一个 name 条目。

def sql_removeduplicates():
con = sqlite3.connect('WOWT.sql')
with con:
cur = con.cursor()
cur.execute("SELECT name, COUNT(*) FROM players GROUP BY name, team, wowp_id HAVING COUNT(*) > 1")
rows = cur.fetchall()
con.commit()
for row in rows:
print row

我在玩家中的行数:

  (id, wowp_id, name, team)
(108, 501078041, u'prazluges', None)
(109, 507894244, u'Aidis', None)
(110, 500742127, u'Aidis', None)
(111, u'Aidis', u'Aidis', None)
(112, u'Aidis', u'Aidis', None)
(113, 500864543, u'prazluges', None)
(114, u'Aidis', u'Aidis', None)
(115, u'Aidis', u'Aidis', None)
(116, u'Aidis', u'Aidis', None)
(117, 501078041, u'satih', None)
(118, u'Aidis', u'Aidis', None)

最佳答案

你可以做到

DELETE FROM players
WHERE id NOT IN
(
SELECT MIN(id) id
FROM players
GROUP BY wowp_id, name
);

注意:在继续DELETE之前,请确保您对数据进行了可靠的备份。

从表中删除重复项后,确保创建一个UNIQUE 约束

CREATE UNIQUE INDEX idx_wowp_id_name ON players(wowp_id, name);

去重后的结果:

|  id |   wowp_id |      name | team ||-----|-----------|-----------|------|| 108 | 501078041 | prazluges | None || 109 | 507894244 |     Aidis | None || 110 | 500742127 |     Aidis | None || 111 |     Aidis |     Aidis | None || 113 | 500864543 | prazluges | None || 117 | 501078041 |     satih | None |

这是 SQLFiddle 演示

关于python - 删除sqlite中的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com