为每个id抓一个

时间:2011-08-03 14:24:13

标签: mysql sql greatest-n-per-group

我现在有这个:

SELECT de.id, d.name, de.title discos_events de
INNER JOIN places d ON (de.dID = d.id)
WHERE unix_timestamp(now()) > de.date
LIMIT 10

这向我展示了最近的10个事件。

所以无论10个事件是来自同一个地方(dID),它仍然会显示10 ..

现在我希望每个地方显示1个最新活动。

因此,如果20个事件10来自dID 1而10来自dID 2,则它应该从每个地方输出一个事件,因此总共将有2个事件。这两个事件是最新的事件(unix_timestamp(now())> de.date)

1 个答案:

答案 0 :(得分:2)

假设您在同一天没有同一个ID的两个事件:

SELECT de.id, d.name, de.title 
FROM discos_events de INNER JOIN places d ON (de.dID = d.id) 
WHERE de.date = (SELECT MAX(t.date)
                 FROM disco_events t
                 WHERE t.dID = de.dID
                       AND unix_timestamp(now()) > t.date)
LIMIT 10;