无法使用mysql group by从表中获取最后一项

时间:2016-05-07 17:24:48

标签: mysql nested-queries

我正在尝试创建一个mysql查询,该查询接收group by子句中的最后一项。但是,当我分组时,它给了我第一个记录。我尝试了许多连接和许多搜索,但无法找到正确的方法。

我的数据库设计如下:

消息:

  • message_id *
  • 的thread_id
  • USER_ID
  • 消息
  • created_at

用户:

  • USER_ID *
  • 名称

线程:

  • 的thread_id *
  • 名称

usersthreads:

  • ID *
  • USER_ID
  • 的thread_id

我想提出的查询应该是,如果是user_id,那么:

  • threads.thread_id
  • users.name
  • messages.message
  • messages.created_at

这里的问题是,对于users.name,我不需要提供的用户名,而是线程中的其他用户名。我现在正在努力解决这个问题:

select t.thread_id as thread, t.name as name, messages.message as message,        max(messages.created_at) as date  
from (SELECT threads.thread_id, nt.name
      FROM threads,messages,
            (SELECT users.name as name, usersthreads.thread_id as threadID
            from users,usersthreads
            where users.user_id=usersthreads.user_id
            and users.user_id!='$userID') as nt
      WHERE threads.thread_id=messages.thread_id
      and nt.threadID=threads.thread_id
      AND messages.user_id=$userID
      GROUP BY messages.thread_id) as t
inner join messages
on t.thread_id = messages.thread_id 
group by t.thread_id
order by date DESC

这个查询的问题在于它返回了我需要的内容,但是每个线程返回的消息是线程的第一条消息,而不是最后一条(“最近的”)消息。谢谢。

0 个答案:

没有答案