Sie sind hier: Startseite -> MySQLi-Grundlagen -> select - distinct

Mit select und distinct in MySQLi doppelte Einträge verhindern

Doppelte Datensätze ausschließen

Also wissen wir jetzt, wie man mit select Abfragen in der MySQLi-Datentabelle durchführen kann, wir können mit order by eine Sortierung einbauen und haben mit der where-Option eine umfangreiche Filterung im Angebot. Es gibt aber noch ein anderes Problem, das nach einer Lösung ruft.

Doppelte Einträge verhindern durch select distinct

Was ist, wenn man in einer Adressliste doppelte Datensätze vermeiden möchte, um die Liste kurz und übersichtlich zu halten. Ok, bei 20.000 Adressen ist dies ohnehin nicht möglich, aber stellen wir uns folgende Situation vor: man hat eine Adresstabelle mit 20.000 Einträge, aber diese betreffen vor allem Mitarbeiterinnen und Mitarbeiter von großen Unternehmen. So kann es passieren, dass man gleich 100 mal die gleiche Adresse vorfindet. Will man nun Serienbriefe ausschicken und nimmt als Basis die Daten aus einer MySQLi-Datenbank, dann spart man viel Papier, wenn man das Team eines Unternehmens nur einmal anschreibt.


Webhosting mit viel Software bei Alfahosting (Affiliate-Link)


select distinct adresse from adressen

Das Beispiel zeigt eine Abfrage, bei der mit dem Schlüsselwort distinct die Abfrage erweitert wurde und sich auf das Datenfeld adresse bezieht. In adresse wurde die Straße mit Hausnummer gespeichert und distinct scheidet alle aus, die doppelt vorkommen. Es wird also im Ergebnis der Datentabelle adressen jede Adresse nur einmal aufscheinen, auch wenn es die Adresse 100-mal gespeichert gibt.

select distinct nachname, adresse from adressen

Diese Abfrage läuft ähnlich wie die erste, aber distinct kann mehr als nur die doppelten Einträge eines Feldes ausschließen. In diesem Fall schließt das Schlüsselwort die doppelten aus, die es in der Kombination von Nachname und Adresse geben kann. Wenn zum Beispiel 100-mal die Musterstraße in der Adresse zu finden ist, aber jeder dieser Einträge weist einen anderen Familiennamen auf, dann werden dennoch alle 100 Einträge gezeigt, obwohl die Adresse ident ist.


Webhosting bei Alfahosting - jetzt gratis testen! (Affiliate-Link)


Distinct kann ein nützliches Werkzeug sein, frisst aber gerne viele Ressourcen des Servers. Man sollte das Schlüsselwort also sparsam einsetzen.

Buchtipp: Einstieg in PHP 8 und MySQL (Amazon)*

*= Affiliate-Link; bei Kauf unterstützen Sie die Plattform

Lesen Sie auch

MySQLi basiert auf SQL und daher gibt es gar nicht so viele Befehle wie etwa in einer richtigen Programmiersprache, aber es gibt zu den Befehlen viele Zusätze, speziell bei der Abfrage mit select. Es gibt aber auch Befehle, die man kaum braucht und dazu gehört create zum Anlegen von Datenbanken und Datentabellen oder drop zum Löschen selbiger. Auch alter als Befehl zum Ändern wird selten benötigt.

Dann gibt es Anordnungen, die man sehr oft oder gelegentlich braucht, ganz nach Situation. Mit delete kann man Datensätze löschen und das ist in einem Skript immer wieder der Fall, etwa alte Statistikdaten. Und mit insert kann man neue Datensätze anlegen, zum Beispiel nach dem Eintragen im Geästebuch.

Der große Akteur auf Ebene der MySQLi-Datenbank auch von PHP aus ist der Befehl select. Er dient dazu, die vorhandenen Daten zu untersuchen und es gibt eine ganze Reihe an Möglichkeiten, wie dies erfolgen kann. Mit Filter, mit Begrenzungen oder auch mit verknüpften Kriterien, um die richtigen Datensätze zu finden. Selbst rechnen ist damit möglich.

Weitere Befehle gibt es mit Drop und Truncate, wobei Drop eine Tabelle komplett löschen kann oder auch Datenfelder aus einer Tabelle. Truncate leert die Tabelle, löscht also alle Datensätze. Diese Befehle nutzt man aber nicht in Skripte von außerhalb, sondern setzt sie direkt in phpMyAdmin bei der Verwaltung ein.

Themenseiten

Diesen Artikel teilen

Infos zum Artikel

MySQLi Angabe distinct bei AbfragenArtikel-Thema: Mit select und distinct in MySQLi doppelte Einträge verhindern
Beschreibung: Der Zusatz 📀 distinct ermöglicht bei der MySQLi-Abfrage mit select, dass ✅ doppelte Datensätze angezeigt werden.

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel
Praxisartikel