我有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
谢谢!顺便说一句,我的英语不好,对不起,如果我的问题不是那么清楚的话。
答案 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)