我的表:
_id | state | timeStamp
我想选择state = 0的所有行,并按timeStamp对结果进行排序。我想删除所有通过特定限制的项目,比如50行。
*基本上,我不希望状态= 0
的行超过50行我怎样才能做到这一点?我试过写一个,但我有点迷失了......
DELETE FROM表WHERE(state = 0)ORDER BY timeStamp
答案 0 :(得分:1)
将NOT IN
语句与子查询一起使用:
DELETE FROM table WHERE state = 0 AND _id NOT IN(SELECT _id FROM table WHERE state = 0 ORDER BY timeStamp LIMIT 50);
它的作用是选择state = 0
所有的行,然后在timeStamp上排序时删除所有state = 0
的所有50行
答案 1 :(得分:1)
您可以找到第50行的时间戳,然后对状态为0且时间戳较旧(或者更新,适用于此处)的行执行删除语句,而不是找到的时间戳。