它是存儲日誌/活動表: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