MySql加入表

时间:2011-08-15 19:32:24

标签: mysql phpmyadmin

我有3张桌子,
 jos_messages => 'message_id(PK)','message','from_user_id','touser id'

jos_message_thread => 'thread_id PK','message_id FK','from_user_id','to_user_id'

jos_users => 'user_id(FK)','firstname','avatar'

我需要用这个表进行查询以在一个结果中返回数据,数据是: 最后插入的消息(jos_messages),消息发送者的名字和头像(jos_users) 结果应该是这样的:

消息:“嗨,这是最后插入的消息”

姓: “LEDIF”

化身: “http://a.com/a.png”

我现在拥有的是这个查询,但问题是,返回的消息不是插入的最后一条消息。

SELECT jmt.from_user_id, jm.message, ju.firstname, ju.avatar
FROM jos_messages_thread AS jmt
LEFT JOIN jos_messages AS jm ON jm.message_id = jmt.message_id
LEFT JOIN jos_comprofiler AS ju ON ju.user_id =     jmt.from_user_id
WHERE jmt.to_user_id ='$user_id'
AND jmt.thread_owner ='$user_id'
GROUP BY jmt.from_user_id

有没有办法在左连接查询的中间对jm.message_id进行ORDER?使其成为:

LEFT JOIN jos_messages AS jm ON jm.message_id = (LAST INSERTED) jmt.message_id

谢谢!顺便说一句,我的英语不好,对不起,如果我的问题不是那么清楚的话。

2 个答案:

答案 0 :(得分:0)

您无需在联接中间插入ORDER BY,即使有办法执行此操作也是如此。在整个查询结束时只需ORDER BY jm.message_id DESC,并使用LIMIT 1将结果限制在第一行。

答案 1 :(得分:0)

LEFT JOIN jos_messages AS jm ON jm.message_id = (Select jthread.message_id from jos_messages_thread Order By jthread.message_id desc Limit 1)