2015-08-08 46 views
-1

我創建了下面的查詢與一個小問題,工作時間順序:顯示一個結果每個ID,並保持

SELECT pe.*, cache.column1,p.column2,p.ID 
    FROM events AS pe 
    INNER JOIN cache ON pe.ID = cache.ID 
    INNER JOIN places AS p ON pe.ID = p.ID 
WHERE pe.createdTime > *NOW UNIX TIME* 
    GROUP BY pe.ID 
    ORDER BY pe.createdTime ASC LIMIT 6 

它顯示了最新記錄爲例外,除非有PE的多個記錄表顯示最遠pe表記錄(最遠= 最近pe.createdTime,而不是即將到來的)。

嘗試了一些變化,它仍然顯示這個地方的最遠記錄(p.ID)。尋找你的幫助!

+1

考慮提供正確的DDL(和/或sqlfiddle)和期望的結果 – Strawberry

回答

0

如果我理解正確,您只需要用最新的pe時間獲取記錄。你可以用聚集做到這一點,一個連接:

SELECT pe.*, c.column1, p.column2,p.ID 
FROM events pe INNER JOIN 
    cache c 
    ON pe.ID = c.ID INNER JOIN 
    places p ON pe.ID = p.ID INNER JOIN 
    (SELECT pe.id, MIN(createdTime) as minct 
     FROM events pe 
     WHERE pe.createdTime > *NOW UNIX TIME* 
     GROUP BY pe.id 
    ) pemin 
    ON pe.id = pemin.id and pe.createdTime = pemin.mminct 
GROUP BY pe.ID 
ORDER BY pe.createdTime ASC 
LIMIT 6; 

你可能不需要group by但不知道你的數據,這是很難肯定地說。

+0

謝謝先生!我已經瞭解到您提供的查詢的想法,並將其更改爲我的需求來解決我的解決方案。它工作得很好 - 而且我實際上需要MIN值而不是MAX。 – TheUnreal