14

会話とメッセージの 2 つのテーブルを取得しました。やりたいことは、会話からメッセージへの内部結合を作成することです。

これが私のクエリです:

    SELECT 
    messages.msg,
    messages.`read`,
    conversations.userid,
    conversations.contactid

    FROM conversations 
        INNER JOIN messages ON 
        conversations.id = messages.convId
    WHERE conversations.id IN(443,444)

これですべてが正常に機能しますが、最後に、使用する内部結合で

conversations.id = messages.convId

次のように、最高のIDのみを取得したいと思います。

 AND MAX(messages.id)

しかし、それはうまくいきません

編集: 私は一度使用しようとしました:

LEFT JOIN messages 
    ON conversations.id = messages.convId 
        AND messages.id = MAX(messages.id) 

しかし、次のようなエラーが表示されました:グループ関数の使用が無効です。

4

3 に答える 3

23

編集

これはうまくいきます!

SELECT conversations.*, m1.* 
FROM conversations 
LEFT JOIN messages m1
    ON conversations.id = m1.cid 
    AND m1.id = (
            SELECT MAX(m2.id) 
            FROM messages m2 
            WHERE m2.cid = conversations.id
        )
于 2013-05-26T15:46:37.490 に答える