mysql - 如何使这个 mysql 查询显示不同的行?

标签 mysql

SELECT DISTINCT message_group.group_id, messages.*
FROM messages
LEFT JOIN message_group ON message_group.group_id = messages.group_id
WHERE message_group.username = 'admin'
OR message_group.recipients = 'admin'
ORDER BY messages.id DESC

以下是它显示数据的方式,即使我指定了DISTINCT message_group.group_id

为什么要这样做?我怎样才能让它只显示一个组ID

更多引用:https://stackoverflow.com/questions/36167801/how-to-order-message-groups-messages-just-like-imessage

最佳答案

试试这个:

SELECT message_group.group_id, messages.*
FROM messages INNER JOIN
    (SELECT 
        MAX(`timestamp`) AS latest,
        group_id
     FROM messages
     GROUP BY group_id) m2 
     ON messages.group_id = m2.group_id AND messages.`timestamp` = m2.`timestamp`
LEFT JOIN message_group ON message_group.group_id = messages.group_id
WHERE message_group.username = 'admin'
OR message_group.recipients = 'admin'
ORDER BY messages.id DESC

关于mysql - 如何使这个 mysql 查询显示不同的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169536/

相关文章:

php - 计算重复记录

php - 处理混合 utf8 和 utf8mb4 MYSQLI & PHP

PHP 时区功能不起作用

mysql - 在 docker-compose.yaml 中配置应用程序和 MySQL DB - 无法打开 JDBC 连接

MySQL 在一次查询中获取 mindate 和 maxdate

php - 我如何根据最早日期选择供应商?

mysql - 如何在 MySQL 中索引查找表

mysql - 如果某个值尚未存在于 MySQL 数据库中,则插入一行

java - Spring Data JPA 查询返回 null

MySQL-从两个表中正确获取用户及其订单数据