簡體   English   中英

如何使用兩個連接獲取最后的數據

[英]How to get last data using two join

我有一個聊天表,在user_from和user_to中有用戶表使用的引用ID。 現在我需要查詢從facebook caht list這樣的聊天表中獲取聊天成員列表。 我和誰聊天,我必須從用戶表和未讀計數器中找到用戶名 在此輸入圖像描述

請給我解決方案謝謝

我認為你的子查詢需要相關,這將是緩慢的。

請改用JOIN。

SELECT 
    users.id AS userid,
    chat_box.id AS msgid,
    first_name,
    last_name,
    profile_pic,
    LEFT(message, 50) AS message,
    u.unreadcounter
FROM
    chat_box
        LEFT JOIN
    users ON (chat_box.user_from = users.id)
        LEFT JOIN
    (SELECT 
        u.id, COUNT(c.id) unreadcounter
    FROM
        chat_box c
    JOIN users u ON (c.user_from = u.id)
    WHERE
        c.read = 0 && c.user_to = 45
    GROUP BY u.id) u ON users.id = u.id
WHERE
    (user_from = 45 OR user_to = 45)
        && users.id != 45
GROUP BY users.id 
UNION SELECT 
    users.id AS userid,
    chat.id AS msgid,
    first_name,
    last_name,
    profile_pic,
    LEFT(message, 50) AS message,
    0 AS unreadcounter
FROM
    chat_box AS chat
        LEFT JOIN
    users ON (chat.user_to = users.id)
WHERE
    (user_from = 45 OR user_to = 45)
        && users.id != 45
GROUP BY users.id
ORDER BY msgid DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM