2017-07-15 63 views
-1

我只是开始玩MySQL,我似乎被一个问题困住了。Mysql加入两个表并限制并订购一张表

我有2张表,我已经离开他们加入工作的一部分,但这还不够。我想顶到底该表信息

例其中一个表是为了通过ID

表聊天

id 
1 
2 
3 

表信息

chat_id 
1 
2 
3 

SELECT * 
FROM (SELECT * FROM `messages`) AS m LEFT JOIN 
    chat as c 
    ON m.chat_id = c.id 
WHERE c.one ='$user_id' OR c.two = '$user_id' 
GROUP BY c.id, m.chat_id 
ORDER BY m.dates DESC 
LIMIT 8 
+0

你需要从查询中得到什么?按ID排序的聊天中的所有消息列表? –

+0

@JoeyPinto yes亲爱的当用户发送新消息这条消息已被标记为 –

+0

更新您的问题添加一个正确的数据样本和预期的结果 – scaisEdge

回答

0

你试图获得来自每次聊天的最近消息的聊天列表?

如果是的话,最好的办法是将列添加到聊天表包括“latest_message_id”这样你就可以查询这样的:

SELECT * FROM chat LEFT JOIN messages ON messages.id = chat.latest_message_id

否则,你将需要运行一个非常大的子查询会浪费大量的CPU和内存

+0

民建联是我想要显示一条短信,并通过消息列出用户 –