這裏是我的表結構:
「作者」(VARCHAR)| 「點」(整數)| 「Body」(文字)
作者永遠是一樣的,身體也是。相同的作者條目會在整個數據庫中出現多個不同的主體,所以我不能根據作者進行刪除。但是,點列並不總是相同的。我想要保持具有最大點值的行。
我正在使用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模塊安裝正確,我可以在數據庫上編寫。
*蜂鳴聲*歡迎回到堆棧溢出,友好的用戶。請確保所有問題的措辭都是問題形式。此外,請保持禮貌並記得接受你的問題的答案。祝您有美好的一天。 *嗶聲* –
你有什麼嘗試?重複行刪除通常使用某種排序功能完成,如ROWNUMBER,按作者和正文進行分區。 – Bort
嘗試這樣做:http://stackoverflow.com/questions/6165895/delete-duplicate-rows,尤其是Vivek的答案。 (當然,您想切換不等式的方向以獲得最大的點值。) –