根据下表:
+----+--------+--------+------------+
| id | val1 | val2 | timestamp |
+----+--------+--------+------------+
| 1 | 50 | 100 | 1471869500 |
| 2 | 50 | 100 | 1471869800 |
| 3 | 60 | 70 | 1471864400 |
| 4 | 60 | 80 | 1471863300 |
| 5 | 60 | 90 | 1471862200 |
| 6 | 60 | 100 | 1471861100 |
+----+--------+--------+------------+
我想删除val1和val2列中具有重复值的所有行(因此将是第1行和第2行),但保留最后插入的行(第2行)。在示例表中,只删除第1行。
我如何创建一个SQLite语句来为我做这件事?
我试过:
Select statement to find duplicates on certain fields
Delete all Duplicate Rows except for One in MySQL?
https://dba.stackexchange.com/questions/101697/sqlite3-remove-duplicates-by-multiple-columns
干杯
2条答案
按热度按时间1bqhqjot1#
看起来SQLite在其
DELETE
语法中不支持直接连接,但您仍然可以使用相关子查询来完成工作。brtdzjyr2#
如果我运行小提琴,大部分数据集都会被删除,只剩下id = 5。
我想删除val1和val2列中具有重复值的所有行(因此将是第1行和第2行),但保留最后插入的行(第2行)。在示例表中,只删除第1行。
这样就可以完成任务,只删除第1行:
http://sqlfiddle.com/#!7/6cc1d/1