首页 > 解决方案 > 使用python删除SQLite数据库中的行,其中有两个条件

问题描述

我是 python 和 SQLite 的新手,希望你能帮助我。我试图弄清楚如何删除 SQLite 数据库中的一行,因为我有两个条件。

这大致是我的代码的样子:

a.execute("""Create Table xxx (
Data,
ID,
Date)""")

a.execute("Insert into xxx values (?, ?, ?)", (data, ID , date)""")

我的问题是大量数据正在进入数据库并且 ID 不明确。如果有两个或多个具有相同 ID 的数据集,我只想保留一个具有最新日期的数据集)

我用这段代码试了一下:

a.execute ("""delete from xxx
where date not in(
Select max(date) from xxx
group by ID

但问题是,它不会删除任何东西,可能是因为每个日期都在那里。

你能帮我么?

标签: pythonsqlite

解决方案


您可以更新查询以检查该行的日期是否不等于最大结果。此外,您应该更新子查询以仅包含 id 与主删除查询中的 id 相同的行:

delete from xxx t1 
where t1.date != (select max(t2.date) from xxx t2 where t2.id = t1.id)

推荐阅读