php - 如何使用两个连接获取最后的数据

标签 php mysql join union

我有一个聊天表,在 user_from 和 user_to 中有用户表使用的引用 ID。 现在我必须查询从聊天表中获取聊天成员列表,如 facebook caht 列表。 我和谁聊天,我必须从用户表和未读计数器中找到用户名 enter image description here

请给我解决方案 谢谢

最佳答案

我认为你的子查询需要关联,这会很慢。

改为使用 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

关于php - 如何使用两个连接获取最后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777901/

相关文章:

mysql - 从关联表中选择行数而不进行子选择

php - MYSQL,插入有效但无法连接

php - codeigniter:无法使用连接检索数据

php - 如何通过 MySQL 查询使用 BirthDate 列获取以月为单位的年龄?

php - PHP 未完全检索 Shell 输出!

php - 导出所有产品的库存数量以在 Magento 中表现出色

MySQL:加入很多表

php - 通过 Wordpress 的自定义字段插件设置背景图片

php - 如何在 PHP 中搜索文件并返回结果数组和行号?

mysql - 跨连接表求和