使用INNER JOIN和LIMIT 1查询别名

时间:2013-06-30 15:12:06

标签: mysql

我有3张桌子:

    Message_group
    ---------------------------------------
    message_group_id | profile_id | group_id
    ----------------------------------------

    1                    sN07X2    4934Me
    2                    abcde2    4934Me
    3                    Red3zw    3492Ga
    4                    Hgr43s    3492Eh
    ----------------------------------------

    Private_Message
    ----------------------------------------
    msg_id | msg_txt | profile_id | occured_at
    -----------------------------------------
    1         Hello       abcde2      2013-06-26
    2         Bye Bye     abcde2      2013-06-26
    3         Ciao        Red3zw      2012-06-26|
    -----------------------------------------

   Users
   -------------------------------------------
   profile_id | name | sirname | 
   sN07X2       Jin     OO
   abcde2      Gerry    UU
   Red3zw      Lola     YY
   Hgr43s      Scot     EE

我希望得到像那样的结果

  profile_id | profile_id2 | group_id | msg_text
   abcde2         sN07X2      4934Me     abcde2

我想要这个结果但是像msg_text只是最后一个消息。 我写的这个查询给了我这个结果,我不知道如何添加带有限制1的字段msg:

  profile_id | profile_id2 | group_id |
   abcde2         sN07X2      4934Me   

QUERY:

SELECT * FROM message_group a
JOIN message_group b ON a.group_id=b.group_id
INNER JOIN users ON users.profile_id = b.profile_id  
WHERE a.profile_id = 'sN07X2'
AND b.profile_id != a.profile_id

1 个答案:

答案 0 :(得分:1)

未经测试,但可能

SELECT a.*,b.*,(SELECT msg_txt FROM Private_Message p WHERE p.profile_id=a.profile_id ORDER BY occured_at DESC LIMIT 1) 
FROM message_group a
JOIN message_group b ON a.group_id=b.group_id
INNER JOIN users ON users.profile_id = b.profile_id  
WHERE a.profile_id = 'sN07X2'
AND b.profile_id != a.profile_id

但是,我真的不明白你的情况:AND b.profile_id != a.profile_id ?? !!