微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sqlite 查询从一列中删除重复项删除取决于第二列

如何解决Sqlite 查询从一列中删除重复项删除取决于第二列

请看下面的数据示例:

enter image description here

在这个表中,我有多个列。没有 PRIMARY KEY,根据我附上的图片,STK_CODE 中有一些重复项。根据 (min) 列,我想删除重复的行。

根据图片一个stk_code有3行不同。对应这些重复的stk_codes,(min)列中的值不同,我想保留(min)列中具有最小值的行。

我是 sqlite 的新手,我正在处理 (-lsqlite3) 以将 cpp 与 sqlite 结合。

有什么办法吗?

解决方法

你的表有 rowid 作为主键。
使用它来获取您不想删除的 rowid

DELETE FROM comparison
WHERE rowid NOT IN (
  SELECT rowid
  FROM comparison
  GROUP BY STK_CODE
  HAVING (COUNT(*) = 1 OR MIN(CASE WHEN min > 0 THEN min END))
)

此代码使用 rowid 作为 bare column 和 SQLite 的记录功能,当您使用 MIN()MAX() 聚合函数时,查询返回包含最小值或最大值。

查看简化的 demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。