Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL:Wie kann man die Zeilenreihenfolge mit DISTINCT beibehalten?

die distinct Schlüsselwort tut, was es tun soll, gibt jeweils eine Zeile mit einem bestimmten Spaltenwert zurück. Distinct erlaubt Ihnen nicht, welche anzugeben Eine solche Zeile wird zurückgegeben, und aus der ursprünglichen Abfrage geht hervor, dass eine solche Reihenfolge zulässig ist (es gibt eine Zeile mit der ID 443, die auf eine Zeile mit der ID 429 folgt).

Um zu steuern, welche Zeilen zurückgegeben werden, müssen Sie die Abfrage neu formulieren. Eine typische Lösung, die ich nehme, ist die Verwendung eines group by , Auswählen der Gruppenspalte und der gewünschten Zeile aus jeder Gruppe, etwas in der Wirkung von

SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Wenn ich mehr tun muss, verwende ich diese Art von Abfrage als Unterauswahl in einer größeren Abfrage und verknüpfe möglicherweise das ID-Feld, um mehr Felder aus der bevorzugten Zeile zu erhalten, oder ordne die Abfrage auf eine bestimmte Weise.