In MySQL-Abfrage können nicht alle Felder mit DISTINCT ausgewählt werden
Beim Versuch, doppelte Zeilen mithilfe des Schlüsselworts DISTINCT zu entfernen, können Benutzer auf Einschränkungen stoßen Sie wählen alle Felder in ihren MySQL-Abfragen aus. Dieser Artikel befasst sich mit dem Problem und bietet eine Lösung.
Hintergrund
Das Schlüsselwort DISTINCT identifiziert und gibt nur eindeutige Zeilen in einem Ergebnissatz zurück, basierend auf der/den angegebenen Spalte(n). ). In Kombination mit einer Select-All-Anweisung (*) kann es jedoch zu Fehlern kommen.
Betrachten Sie die folgende Abfrage, die nur die Spalte „ticket_id“ in der Tabelle „temp_tickets“ auswählt und sie nach „ticket_id“ sortiert:
mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
Diese Abfrage wird erfolgreich ausgeführt und gibt eindeutige Ticket-ID-Werte zurück. Die folgende Abfrage, die versucht, alle Felder auszuwählen und DISTINCT:
mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
zu verwenden, führt jedoch zu einem Fehler. Dies liegt daran, dass DISTINCT nur auf eine einzelne Spalte angewendet werden kann.
Lösung
Um alle Felder auszuwählen und DISTINCT zum Entfernen von Duplikaten zu verwenden, ändern Sie die Abfrage wie folgt:
SELECT ticket_id, <other_field>, <other_field> FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id
In dieser Abfrage wird die GROUP BY-Klausel in Verbindung mit DISTINCT verwendet, um die Ergebnisse nach der Spalte „ticket_id“ zu gruppieren. Für jede eindeutige Ticket-ID wird nur eine einzelne Zeile zurückgegeben, die die neuesten Werte für die angegebenen Felder enthält.
Das obige ist der detaillierte Inhalt vonWie wähle ich alle Felder mit DISTINCT in MySQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!