0

我有这样的表(TABLE_NAME): 在此处输入图像描述

我想检查计数是否超过 5,如果是,则删除时间戳值最低的行。在这个例子中,它应该删除最后一行。

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

4

2 回答 2

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

通过此查询,您:

  • 按 T​​IMESTAMP DESC 排序记录
  • 选择第 5 条记录 TIMESTAMP(允许的最小值)--> min_timestamp
  • 您删除了 TIMESTAMP < min_timestamp 的所有记录

我没有对其进行测试,但这应该是解决您问题的查询。

于 2013-02-27T14:55:55.163 回答
0

这是您的解决方案

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

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

于 2013-02-27T15:51:28.430 回答