由同一用户分组消息

时间:2016-04-25 02:44:52

标签: php mysql

我有2张桌子.. 1-用户,2张消息

我写了这个查询,但它没有显示最后一个主题,我需要最后一个主题

select (
        CASE WHEN messages.sender = 68314 THEN messages.receiver ELSE messages.sender END
        ) AS user_id, 
        MAX(messages.added) last_added,messages.subject,
        MAX(messages.id) as last_id,users.username  
FROM messages  
INNER JOIN users ON users.id = IF(messages.sender = 68314, messages.receiver, messages.sender) 
WHERE (messages.sender = 68314 or messages.receiver = 68314) AND messages.sender!=0  
GROUP BY 
(
    CASE WHEN messages.sender = 68314 THEN messages.receiver ELSE messages.sender END
) 
ORDER BY last_added DESC

它显示第一个主题,而不是最后一个主题。

1 个答案:

答案 0 :(得分:0)

请试试这个查询。它首先选择与id 68314交谈的人的消息的最大(id),假设这些消息是最后创建的......并且与消息连接,并且与用户联合以获得另一个人的姓名。

SELECT last_messages.user_id,
       m.added as last_added,
       m.subject,
       last_messages.last_id,
       u.username
FROM messages m
INNER JOIN
  (SELECT IF(sender = 68314,receiver,sender) as user_id,
         MAX(id) as last_id
  FROM messages
  WHERE IF(sender = 68314,sender,receiver) = 68314
  GROUP BY user_id
  )last_messages
  ON last_messages.last_id = m.id
INNER JOIN users u ON last_messages.user_id = u.id
ORDER by last_added;

sqlfiddle