2012-04-13 87 views
0

我有一個表「ABC」在哪裏存儲具有多個記錄時間戳讓想SQL查詢應該返回至少兩天記錄

1334034000 Date:10-April-2012 
1334126289 Date:11-April-2012 
1334291399 Date:13-April-2012 

我想建立一個SQL查詢在哪裏可以找到在第一次嘗試記錄具有最後兩天的值,並且在接下來的兩天中第二次記錄。 。 。

例子:

Select *,dayofmonth(FROM_UNIXTIME(i_created)) from notes 
where dayofmonth(FROM_UNIXTIME(i_created)) > dayofmonth(FROM_UNIXTIME(i_created)) -2 
order by dayofmonth(FROM_UNIXTIME(i_created)) 

這個查詢返回的所有記錄日期明智的,但是我們需要很大部分2天記錄。

請相應提出建議。 在此先感謝

編輯:

如果今天是4月13日,我們的表有最大10天,9%,8。 。 。四月那麼我們必須拿出10,4月9日,他的最後日期記錄

+0

所以只是可以肯定的,你行的每一個都有一個時間戳,告訴該行的創建日期,對吧? – Adi 2012-04-13 05:14:55

+0

是的,但是日期並不確定在過去兩天中是否與之相同。 :) – Suleman 2012-04-13 05:18:05

+1

對不起,我沒有理解「是」後的所有內容,請您重新說明一下嗎? – Adi 2012-04-13 05:19:10

回答

2

結束嘗試此查詢 -

SELECT t1.* FROM table t1 
    JOIN (SELECT date FROM table GROUP BY date DESC LIMIT 2) t2 
    ON t1.date = t2.date 

它會顯示與日期的所有記錄= '11-April-2012'和'13-April-2012'。

這是你想要的嗎?


編輯:

SELECT 
    t1.*, t2.date 
FROM 
    notes t1 
JOIN (SELECT 
     DATE(FROM_UNIXTIME(i_created)) date 
     FROM 
     notes 
     GROUP BY 
     date DESC 
     LIMIT 
     2 
) t2 
ON 
    DATE(FROM_UNIXTIME(t1.i_created)) = t2.date 
+0

讓我試試吧。 – Suleman 2012-04-13 05:56:22

+0

因此它變成----- SELECT t1。*,dayofmonth(FROM_UNIXTIME(t1.i_created))FROM註釋t1 JOIN(SELECT *,dayofmonth(FROM_UNIXTIME(i_created))FROM筆記GROUP BY dayofmonth(FROM_UNIXTIME(i_created)) DESC LIMIT 2)t2 ON t1.dayofmonth(FROM_UNIXTIME(t1.i_created))= t2.dayofmonth(FROM_UNIXTIME(t2.i_created))但不能工作 – Suleman 2012-04-13 05:58:39

0

添加limit 2到您的查詢

+0

他不會將結果數量限制爲兩個項目,而是將結果數量限制在最近兩天內的項目中。 – Michelle 2012-04-13 05:14:02

+0

啊,我很難理解這個問題。 – kjones 2012-04-13 05:17:51

+0

@ kjones:完全不是兩個記錄,但有最近的兩個日期! – Suleman 2012-04-13 05:19:42