Heim  >  Artikel  >  Datenbank  >  Wie wähle ich alle Spalten mit DISTINCT in MySQL aus?

Wie wähle ich alle Spalten mit DISTINCT in MySQL aus?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 03:44:30668Durchsuche

How to Select All Columns with DISTINCT in MySQL?

MySQL: DISTINCT für die Auswahl mehrerer Spalten verstehen

Beim Umgang mit doppelten Zeilen in MySQL-Tabellen kann das Schlüsselwort DISTINCT verwendet werden, um eindeutige Zeilen abzurufen Es kann jedoch auch zu Einschränkungen bei der Auswahl mehrerer Spalten kommen. In diesem Artikel geht es um das Problem des Abrufens aller Felder bei der Verwendung von DISTINCT sowie um eine Lösung zum Auswählen des neuesten Eintrags für doppelte Zeilen.

Einschränkungen von DISTINCT für mehrere Spalten

DISTINCT ist keine Funktion, die nur für bestimmte Spalten gilt. Stattdessen handelt es sich um einen Abfragemodifikator, der sich auf alle Spalten in der Auswahlliste auswirkt. Es entfernt doppelte Zeilen, in denen die Werte aller Spalten identisch sind.

Korrekte Syntax für DISTINCT

DISTINCT muss unmittelbar nach SELECT erscheinen (zusammen mit andere Abfragemodifikatoren wie SQL_CALC_FOUND_ROWS). Nach den Abfragemodifikatoren sollten die Spaltennamen aufgelistet werden.

Zum Beispiel:

<code class="sql">SELECT DISTINCT foo, ticket_id FROM table...</code>

Diese Abfrage gibt eine Zeile für jedes eindeutige Wertepaar über „ticket_id“ und „foo“ aus.

Lösung für die Auswahl aller Spalten

Es ist nicht möglich, alle Felder auszuwählen und trotzdem DISTINCT zu verwenden, da alle Spalten identisch sein müssen, um Duplikate zu entfernen. Es gibt jedoch eine Problemumgehung, mit der Sie den neuesten Eintrag für doppelte Zeilen auswählen können:

<code class="sql">SELECT t1.*
FROM table AS t1
JOIN (
    SELECT ticket_id, MAX(row_id) AS max_id
    FROM table
    GROUP BY ticket_id
) AS t2 ON t1.ticket_id = t2.ticket_id AND t1.row_id = t2.max_id</code>

Diese Abfrage verwendet eine Unterabfrage, um die maximale Zeilen-ID für jede Ticket-ID zu finden, und verknüpft dann die Haupttabelle mit der Unterabfrage um die neueste Zeile für jede Ticket_ID auszuwählen.

Das obige ist der detaillierte Inhalt vonWie wähle ich alle Spalten mit DISTINCT in MySQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn