MYSQL内部加入,分组依次使用

时间:2013-07-04 20:27:12

标签: mysql

我想从mysql数据库中使用sql reqeust

合并数据

此messages.tbl

id : 1
sender : ali
responder : aishe
message : hi,how are you aishe
xid : md5($sender.$responder)--for using group by xid
id : 1
sender : ali
responder : aishe
message : answer me aishe plase
xid : md5($sender.$responder)--for using group by xid

和这个members.tbl

id : 1
nickname  : ali
img : ali.jpg

members.tbl中的第二条记录

id:2
nickname : aishe
img : aishe.jpg

我希望列表组按xid和最新的消息显示

我的英语很可怜。 请帮帮我们

所以ali发送了50条帖子消息 和约翰发布了20条消息 和迈克5条消息

我想要写到页面 喜欢 :  阿里的最新消息和阿里的照片  约翰的最新消息和他的照片  迈克的最新消息和他的照片

按最新消息排序,按xid排序(如:44asd32asd12)

理解?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望显示每个用户发送的消息,或者您希望显示每个用户发送的最后一条消息。

如果要显示每个用户的消息,可以使用此查询:

select 
    members.*, -- Put the fields you want from table members (e.g. members.id, ...)
    messages.* -- Put the fields you want from table messages (e.g. messages.message, ...)
from 
    members
    inner join messages on members.nickname = messages.sender;

如果您想要每个用户发送的最后一条消息,您可以使用子查询来过滤数据:

select
    members.*,
    messages.*
from
    members
    inner join messages on members.nickname = messages.sender
    inner join (
        select sender, max(id) as maxId
        from messages
        group by sender
    ) as a on messages.id = a.maxId;

希望这有帮助