gpt4 book ai didi

python - 从 python 中删除除最大值之外的所有重复行

转载 作者:行者123 更新时间:2023-11-29 10:04:32 25 4
gpt4 key购买 nike

我有一个 MySQL 数据库,我正在使用带有 AIOMySQL 的 Discord python 机器人,但我发现机器人错误地创建了具有相同 ID 的重复行,但更新了值,最后这就是我想要的。我的重复行的一个示例:

duplicated rows

所以现在我想删除所有重复的行,除了具有最大 XP 的行。

我首先进行了备份,然后尝试将所有 ID 保存在列表中,除了列表中已经存在的 ID 之外。然后对于每个 ID,删除除最大值之外的所有 ID。就像这段代码一样:

await cur.execute("SELECT ID FROM USUARIOS;")
r = await cur.fetchall()
uslist = []
for a in r:
for b in a:
if b in uslist:
pass
elif b not in uslist:
uslist.append(b)
for user in uslist:
await cur.execute("SELECT * FROM USUARIOS WHERE ID = {} ORDER BY XP LIMIT 1;".format(user))
r = await cur.fetchone()
uid = r[0]
print(uid)
xp = r[1]
await cur.execute("DELETE FROM USUARIOS WHERE ID = {} and xp != {};".format(uid, xp))
await conn.commit()

但是当我看到数据库时,一些行被完全删除,包括最大值。

最佳答案

假设您想在 MySQL 中执行此操作:

SELECT * FROM table WHERE XP <> (SELECT MAX(XP) FROM table) GROUP BY ID, XP, GC
UNION
SELECT * FROM table WHERE XP = (SELECT MAX(XP) FROM table)

关于python - 从 python 中删除除最大值之外的所有重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174211/

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