python - 使用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
但问题是,它不会删除任何东西,可能是因为每个日期都在那里。
你能帮我么?
解决方案
您可以更新查询以检查该行的日期是否不等于最大结果。此外,您应该更新子查询以仅包含 id 与主删除查询中的 id 相同的行:
delete from xxx t1
where t1.date != (select max(t2.date) from xxx t2 where t2.id = t1.id)
推荐阅读
- javascript - 使用咖啡脚本导入 ES6 模块
- javascript - 如何销毁根 Preact 节点?
- c# - 使用 .NET(PowerShell 或 .NET)获取 BCD 条目
- driver - Windows IoT Core 上的 NDIS 协议驱动程序
- ios - Swift 在 UITableView 中创建分页
- css - 如何在离子中使静态离子列表可滚动?
- go - Golang 选择和锁定
- python - 使用 TeX 时 EngFormatter 中的错误
- javascript - getImageData 未使用 data-src 获取图像的 RGB 值
- html - Django:无法正确显示表单集和表单