它是存储日志/活动表:MySQL和检索具有记录超过X天前
log [id, date, time]
我想引用检索比X天更旧的记录到的最古老(第一个插入的)
像这样:
SELECT * FROM log
WHERE
(date BETWEEN MIN(date) AND DATE_ADD(MIN(date), INTERVAL X DAY))
GROUP BY date
ORDER BY date, Time
更新: 虽然我提出了SELECT案例的问题,但现实是我需要删除记录(DELETE)。认为它是相同的(我错了),事实是它不能在同一张表上使用嵌套SELECT进行DELETE操作。 (并且有道理)。
看到结尾很复杂并且需要一个以上的句子,最后我考虑将代码分成两个查询,第一个是获取第一个插入元素的日期,第二个是清除的第二个查询。
$sql1 = "SELECT MIN(date) as MinDate FROM `log`";
// Execute the query and gets the result row using whatever database driver[..]
$minDate = $rowQuery["MinDate"]
$sql2 = "DELETE FROM `log` WHERE Date > DATE_ADD('".$minDate."', INTERVAL ".$days." DAY)";
谢谢。
如果你喜欢,可以考虑下列行为这个简单的两步过程:1.如果您还没有这样做,提供适当的创建和插入语句(和/或sqlfiddle),这样我们可以更容易复制问题。 2.如果您还没有这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry