我正在尝试创建一个mysql查询,该查询接收group by子句中的最后一项。但是,当我分组时,它给了我第一个记录。我尝试了许多连接和许多搜索,但无法找到正确的方法。
我的数据库设计如下:
消息:
用户:
线程:
usersthreads:
我想提出的查询应该是,如果是user_id,那么:
这里的问题是,对于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
这个查询的问题在于它返回了我需要的内容,但是每个线程返回的消息是线程的第一条消息,而不是最后一条(“最近的”)消息。谢谢。