sqlite中复杂的行删除

时间:2013-02-27 14:37:35

标签: ios sqlite

我有这样的表(TABLE_NAME): enter image description here

我想检查count是否超过5,如果是,则删除时间戳值最小的行。在此示例中,它应删除最后一行。

我想用一个复杂的删除语句来做。任何想法如何实现?

2 个答案:

答案 0 :(得分:0)

DELETE
FROM TABLE_NAME
WHERE TIMESTAMP < (
                   SELECT TIMESTAMP 
                   FROM (
                          SELECT TIMESTAMP 
                          FROM TABLE_NAME
                          ORDER BY TIMESTAMP DESC
                        ) LIMIT 1 OFFSET 4);

使用此查询:

  • 按TIMESTAMP DESC订购记录
  • 选择第5条记录TIMESTAMP(您允许的最小值) - &gt; min_timestamp
  • 使用TIMESTAMP&lt;删除所有记录min_timestamp

我没有测试过,但这应该是解决问题的查询。

答案 1 :(得分:0)

这是您的解决方案

delete from TABLE_NAME where timestamp IN (select min(timestamp) from TABLE_NAME where (SELECT count() FROM TABLE_NAME)>5)

它将检查你的tableRecord计数是否为5,然后删除最小时间戳记录。