2011-10-04 35 views
1

選擇的結果這是錶的歷史:基於日期,但知道ID

URL | UID | Method | Tag | Date 

而這個查詢:

$data = mysql_query(" 
     select * from History 
     order by `Date` asc   
     "); 

我需要得到具有比創紀錄的舊日期的URL。

我只有這條記錄的網址。 ($ url)

有沒有辦法找到它並選擇按日期排序的行?

我可以運行一個單獨的查詢與$url得到它的日期,但我想知道是否有可能做到一個查詢。

回答

3

您可以使用子查詢:

SELECT * 
FROM History 
WHERE Date < (SELECT Date FROM History WHERE url = 'foo') 
ORDER BY Date ASC 

產品添加了獨特index到URL以確保該子查詢只會返回一個記錄。

+1

我還要補充'LIMIT 1'到嵌套查詢 – zerkms

+0

@馬克應該是'上面查詢的執行date'場數據類型是什麼? ? – diEcho

+0

@diEcho:沒有限制。如果ORDER BY子句正常工作,那麼WHERE也應該如此。我會建議日期時間。 –

0

這是一個更好的性能,然後子選擇:

SELECT 
    h1.* 
FROM 
    history h1 
INNER JOIN 
    history h2 
ON 
    h2.url = '{URL}' 
WHERE 
    DATEDIFF(h1.`date`,h2.`date`) < 0