2016-03-23 11 views
0
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 

Hier ist, wie es die Daten anzeigt, obwohl ich DISTINCT message_group.group_idWie kann diese mysql-Abfrage eine DISTINCT-Zeile anzeigen?

angegeben Warum es dies tut? Wie kann ich nur eine group id anzeigen lassen?

Weitere Referenz: https://stackoverflow.com/questions/36167801/how-to-order-message-groups-messages-just-like-imessage

+0

Welche anderen Aufzeichnungen sollte angezeigt werden? Die Ergebnisse sind für den gesamten Datensatz "verschieden". Sie können Ihre Ergebnisse mit "group by group_id" "fälschen", aber das gibt nur zufällige Werte für die anderen Zeilen zurück ... – sgeddes

+0

Stimmt es, dass Sie mir Vorschläge zu dieser Frage geben könnten? http://stackoverflow.com/questions/36167801/how-to-order-message-groups-messages-just-like-imessage – Lukeity

+0

Bitte veröffentlichen Sie Ihre erwartete Ausgabe. Wahrscheinlich verkennst du 'DISTINCT'. – 1000111

Antwort

0

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 
Verwandte Themen