0

我有 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   

询问:

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
4

1 回答 1

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??!!

于 2013-06-30T15:21:08.783 回答