가능한 중복 :
Delete duplicate rows 여기SQL 삭제 중복 행
내 테이블 구조입니다 :
"저자"(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 모듈이 올바르게 설치되었고 DB에 쓸 수 있습니다.
* 삐 소리 * 다시 스택 오버플로에 오신 것을 환영합니다. 모든 질문은 질문 형식으로되어 있는지 확인하십시오. 또한 정중하고 질문에 대한 답변을 수락하십시오. 좋은 하루 되세요. * 경고음 * –
당신은 무엇을 시도 했습니까? 중복 행 삭제는 일반적으로 ROWNUMBER와 같은 일종의 순위 지정 기능을 사용하여 작성자와 본문을 분할합니다. – Bort
다음을 시도해보십시오. http://stackoverflow.com/questions/6165895/delete-duplicate-rows, 특히 Vivek의 답변. (물론 가장 큰 포인트 값을 얻기 위해 부등식의 방향을 변경하고 싶습니다.) –