SQL检索每个threadID的最新记录

时间:2018-10-09 00:35:02

标签: mysql sql

表结构:

id | sender | receiver | subject | message | threadID | timestamp | date | readStatus

SELECT * FROM mail 
WHERE sender = 'redphyre' OR receiver = 'redphyre' 
AND threadID BETWEEN (select min(threadID) FROM mail WHERE sender = 'redphyre' OR receiver = 'redphyre' ORDER BY id DESC) 
AND (select max(threadID) FROM mail WHERE sender = 'redphyre' OR receiver = 'redphyre' ORDER BY id DESC) 
GROUP BY threadID;

在此情况下,我试图获取每个用户redphyre的用户threadID的最新记录,在本例中为threadID的0,1,2。但这不是那样的。取而代之的是,我在threadID之间得到了混合结果。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

大概是您想要的:

SELECT m.*
FROM mail m
WHERE 'redphyre' IN (m.sender, m.receiver) AND
      m.id = (SELECT MAX(m2.id)
              FROM mail m2
              WHERE 'redphyre' IN (m2.sender, m2.receiver) AND m2.threadID = m.threadID
             );

BETWEENGROUP BY确实与您想要的内容无关。子查询会考虑同一线程上的所有匹配记录,并返回具有最大id的记录。