简体   繁体   English

如何使此mysql查询显示DISTINCT行?

[英]How to make this mysql query display a DISTINCT row?

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

Here is how it displays the data, even though I specified DISTINCT message_group.group_id 即使我指定了DISTINCT message_group.group_id ,也是如此显示数据的方式

Why does it do this? 为什么这样做呢? How can I have it display only one group id ? 如何显示仅一个group id

More reference: https://stackoverflow.com/questions/36167801/how-to-order-message-groups-messages-just-like-imessage 更多参考: https : //stackoverflow.com/questions/36167801/how-to-order-message-groups-messages-just-like-imessage

Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM