Doppelte Einträge in MySQL-Tabelle finden
-
Hallo,
gibt es bei MySQL eine Möglichkeit doppelte Einträge zu finden?
Angenommen ich habe ein Tabelle mit Namen, EMail und Telefonnr. Gibt es dann eine Syntax anhand der ich nach Einträgen, z.B. mit gleicher Telefonnr., suchen kann, aber ohne konkret die Telefonnummer zu kennen? Also alle Telefonnr. die mehrfach vorhanden sind.
Vielen Dank
-
Ich weiß jetzt ja cniht, wie das in C++ aussieht, aber in PHP ungefähr so:
$query = mysql_query('SELECT telnr FROM nrs WHERE telnr="0190666666"'); $i = 0; while($fetch = mysql_fetch_array($query)) { $i++; } if($i>1) { echo 'Die Telefonnummer ist schon vorhenden,'; }
Natürlich würde das ganze auch per mysql_num_rows() gehen
-
SELECT count(tnummer) AS anzahl,tnummer FROM tabelle GROUP BY tnummer
liefert dir für jede TNUMMER wieoft sie in der Spalte vorkommt.
-
SELECT tnummer, count(tnummer) FROM tabelle GROUP BY tnummer HAVING count(tnummer) > 1
Gibt dir alle Telefonnummern, die öfter als einmal vorkommen und die Anzahl, wie oft sie vorkommen.
ms
-
Und wie kann man doppelte Einträge schon direkt beim Einfügen vermeiden?
-
Die Spalte auf UNIQUE setzen.
ms
-
Bricht mein Programm aber dann nicht ab, wenn ein schon vorhandener Wert eingefügt werden soll?
Mein Programm sollte im Idealfall weiterlaufen. Wie setze ich denn eine Spalte auf UNIQUE?
-
B.U.D. schrieb:
Bricht mein Programm aber dann nicht ab, wenn ein schon vorhandener Wert eingefügt werden soll?
Mein Programm sollte im Idealfall weiterlaufen. Wie setze ich denn eine Spalte auf UNIQUE?
Dein Programm könnte den SQL-Fehler abfangen und einfach weitermachen.
Du kannst aber auch nach einem schon vorhandenen Wert suchen und je nach dem ob du einen gefunden hast das INSERT auslassen.UNIQUE würde ich aber auf jeden Fall einsetzen.
Hier solltest du fündig werden
http://dev.mysql.com/doc/refman/5.0/en/alter-table.htmlms
-
Vielen Dank, es funktioniert nun.