0

如这个问题:Retrieving the last record in each group,我想查询每个组的最新条目。

与链接的问题不同,我还想为最长时间添加一个标准。

我尝试了以下方法:

SELECT m1.*
FROM messages m1
LEFT JOIN messages m2
ON (
    m1.name = m2.name AND
    m1.id < m2.id AND
    m2.time <= nnnnnnn
)
WHERE m2.id IS NULL
AND m1.time <= nnnnnnn;

我不确定这是否 100% 正确,有更好的解决方案吗?也许没有重复time <= nnnnnnn条件?

4

2 回答 2

0

您可以在where子句中执行此操作:

select m.*
from messages m
where m.id = (select m2.id
              from messages m2
              where m2.name = m.name and
                    m2.time <= nnnn
              order by m2.time desc
              limit 1
             ) 
于 2013-04-19T10:55:09.397 回答
0

这就是你要找的。每组最后 n 个小于 x

 SELECT m1.*
    FROM messages m1
    LEFT JOIN messages m2 ON (
        m2.name = m1.name AND
        IF(m2.date < 'nnnnnnn',m2.date > m1.date, m1.date > 'nnnnnnn')) 
    WHERE m2.idIS NULL
于 2017-11-15T21:55:40.943 回答