可能重复:
删除重复的行
这是我的表结构:
"作者" (varchar) | “点”(整数) | “主体)
作者总是一样的,身体也是。同一个作者条目会在整个数据库中以不同的主体出现多次,所以我无法根据作者删除。但是,点列并不总是相同的。我想要保留具有最大点值的行。
我正在使用 SQLite3 和 Python。
谢谢
编辑:
我已经尝试过了,但它只是删除了所有行。
for row in cur.fetchall():
rows = cur.execute('SELECT * FROM Posts WHERE Author=? AND Body=? AND Nested=? AND Found=?', (row['Author'], row['Body'], row['Nested'], row['Found'],))
for row2 in rows:
delrow = row
if (row['Upvotes'] < row2['Upvotes'] or row['Downvotes'] < row2['Downvotes']):
delrow = row2
cur.execute("DELETE FROM Posts WHERE Author=? AND Body=? AND Upvotes=? AND Downvotes=? AND Nested=? AND Found=?", (delrow['Author'], delrow['Body'], delrow['Upvotes'], delrow['Downvotes'], delrow['Nested'], delrow['Found'],))
dn += 1
print "Deleted row ", dn
我也试过这个,但没有奏效。
cur.execute("DELETE FROM Posts WHERE Upvotes NOT IN (SELECT MAX(Upvotes) FROM Posts GROUP BY Body);")
我也提交了所有的更改,所以不是这样。SQLite3 模块安装正确,我可以在数据库上写。