【发布时间】:2016-07-04 15:55:42
【问题描述】:
我对 SQLite 很陌生,因此提出了这个问题!
我需要删除表中的行,以便基于 Y 列(时间)在 X 列(颜色)中最早出现列的每个唯一值。
基本上我有这个:
测试 |颜色 |时间
一个 |黄色 | 8
一个 |红色 | 6
一个 |黄色 | 10
二 |红色 | 4
我要删除的行如下所示:
测试 |颜色 |时间
一个 |黄色 | 8
二 |红色 | 4
提前致谢!
编辑:为了更清楚,无论测试如何,我都需要保留每种颜色出现的最早出现时间。
编辑:我可以通过这样做来选择我想要保留的行:
select * from (select * from COL_TABLE order by time desc) x group by colour;
这会产生所需的结果,但我想删除选择结果中不存在的内容。
编辑:感谢@JimmyB:
DELETE FROM COL_TABLE WHERE EXISTS ( SELECT * FROM COL_TABLE t2 WHERE COL_TABLE .colour = t2.colour AND COL_TABLE .test = t2.test AND COL_TABLE .time < t2.time )
【问题讨论】:
-
以及如何确定第一个条目?
-
@juergend
MIN( time )好像。 -
DELETE FROM my_table WHERE EXISTS ( SELECT 1 FROM my_table t2 WHERE my_table.colour = t2.colour AND my_table.test = t2.test AND my_table.time < t2.time ) -
@JimmyB 不幸的是,这对我不起作用!
-
@juergend 我更需要每种颜色出现的最早时间