擅长:python、mysql、java
<p>这与Python无关。你知道吗</p>
<p>错误很可能来自SQL语句的第一行,您不应该在delete和from之间放置任何内容。见<a href="https://www.sqlite.org/lang_delete.html" rel="nofollow noreferrer">SQLite DELETE syntax</a></p>
<p>即便如此,您至少还有两个错误。你知道吗</p>
<p>首先,不能在DELETE中使用join。您可以用IN或EXISTS重写它(参见<a href="https://stackoverflow.com/questions/18709405/deleting-value-using-sqlite-while-doing-an-inner-join">Deleting value using SQlite while doing an INNER JOIN</a>)</p>
<p>其次,您是在r.id=r.maxvalue上加入的;用sayacdeger的max加入id没有任何意义。你知道吗</p>
<p>解决方案应该是这样的:</p>
<pre><code>DELETE FROM tenant_counter
WHERE EXISTS (SELECT * FROM tenant_counter AS r
WHERE r.id = tenant_counter.id AND r.date = tenant_counter.date
AND r.sayacdeger > tenant_counter.sayacdeger)
</code></pre>
<p>这将删除所有至少有一个具有较大sayacdeger的相同id和日期的记录。如果在多个记录中有相同的最大值,它将保留重复项。你需要为那个案子决定一个策略,不管你是想要那个还是只想保留一个记录。你知道吗</p>
<p>注意:我没有测试上面的SQL语句。你知道吗</p>