我尝试设置查询以删除表格中除最近100条记录以外的所有记录,因此我使用以下查询来确定要使用的时间戳:
SELECT @time := `time`
FROM `table`
GROUP BY `time`
ORDER BY `time` DESC
LIMIT 99,1;
我的目的是使用以下简单查询:
DELETE FROM `table` WHERE `time` < @time;
现在,只要表格中至少有100行就可以了,但是,如果行数较少,那么@time
的值实际上是NULL
,这是没用的;这是因为time < @time
似乎返回每一行(不像直接输入time < NULL
,这有点奇怪)。
无论如何,我的问题是这个;鉴于time
可能是NULL
或为空,我在这种情况下如何跳过DELETE
语句,或者如果这很复杂,我该如何调整DELETE
不仅要删除任何内容,还要尽可能有效地删除(即不搜索)。
如果解决方案需要对我的初始SELECT
进行某种更改,那么这很好,只要保持逻辑(我想保留最近的100个条目)。