MySQL - Doppelte einträge prüfen
Daniel82
- datenbank
0 Cheatah0 Vinzenz Mai0 Daniel82
0 Ilja
Hallo,
ich will eine Spalte nach doppelten Einträgen prüfen. Wenn sie doppelt oder mehrfach ist, soll er mir den Wert anzeigen!
Ich habe gelesen "DISTINCT" löscht die Werte. Stimmt das oder ist "DISTINCT" meine Lösung?
Hi,
Ich habe gelesen "DISTINCT" löscht die Werte. Stimmt das oder ist "DISTINCT" meine Lösung?
DISTINCT liefert Dir jeden Wert (bzw. jede Wertkombination) nur ein Mal. Du suchst die HAVING-Klausel.
Cheatah
Hi,
Ich habe gelesen "DISTINCT" löscht die Werte. Stimmt das oder ist "DISTINCT" meine Lösung?
DISTINCT liefert Dir jeden Wert (bzw. jede Wertkombination) nur ein Mal. Du suchst die HAVING-Klausel.
Cheatah
Beispiel:
Feld: Name
Daniel
Thomas
Werner
Daniel
Berndt
SELECT name FROM tab HAVING name
Ausgabe: Daniel
???
hi,
Beispiel:
Du wurdest bereits hinreichend verstanden.
???
Wenn du die Antwort noch nicht hinreichend verstanden hast, dann informiere dich über genannte Stichworte.
gruß,
wahsaga
Hi,
SELECT name FROM tab HAVING name
hast Du _das_ aus der Dokumentation Deines DBMS erfahren?
Cheatah
Hi,
SELECT name FROM tab HAVING name
hast Du _das_ aus der Dokumentation Deines DBMS erfahren?
Cheatah
Nein, das habe ich mir selbst einfallen lassen. Scheint aber wohl nicht richtig zu sein!?
Hallo Daniel,
SELECT name FROM tab HAVING name
hast Du _das_ aus der Dokumentation Deines DBMS erfahren?
Nein, das habe ich mir selbst einfallen lassen. Scheint aber wohl nicht richtig zu sein!?
könntest Du mir bitte erklären, warum ich Dir die Dokumentation verlinkt habe?
Warum ich Dir einen Thread verlinkt habe, in dem Du Dir Syntaxanschauungsunterricht nehmen kannst?
Freundliche Grüße
Vinzenz
Hi,
Nein, das habe ich mir selbst einfallen lassen. Scheint aber wohl nicht richtig zu sein!?
bitte nicht raten. Ganz besonders nicht, wenn Du auf etwas stößt, das Du noch nicht kennst. Immer _erst_ nachlesen.
Cheatah
Hallo
ich will eine Spalte nach doppelten Einträgen prüfen. Wenn sie doppelt oder mehrfach ist, soll er mir den Wert anzeigen!
Du benötigst die Aggregatsfunktion COUNT(), die eine GROUP BY-Klausel erforderlich macht, anschließend schränkst Du mit HAVING - wie bereits von Cheatah erwähnt - das Ergebnis auf die von Dir gewünschten Werte ein.
Ich habe gelesen "DISTINCT" löscht die Werte. Stimmt das
Nein, das stimmt nicht.
oder ist "DISTINCT" meine Lösung?
Wofür?
Wenn Du keine doppelten oder gar mehrfachen Datensätze haben möchtest - dann sorge in erster Linie dafür, dass keine entstehen. Ein eindeutiger Index kann Dir dabei helfen. Was willst Du überhaupt mit den ganzen IP-Adressen (ich gehe davon aus, es geht um Dein Problem aus einem etwas älteren Thread) anfangen? Speichere einen Zeitstempel (TIMESTAMP) dazu und wirf weg, was ein bestimmtes Alter überschreitet (DELETE).
Freundliche Grüße
Vinzenz
Wenn Du keine doppelten oder gar mehrfachen Datensätze haben möchtest - dann sorge in erster Linie dafür, dass keine entstehen. Ein eindeutiger Index kann Dir dabei helfen. Was willst Du überhaupt mit den ganzen IP-Adressen (ich gehe davon aus, es geht um Dein Problem aus einem etwas älteren Thread) anfangen? Speichere einen Zeitstempel (TIMESTAMP) dazu und wirf weg, was ein bestimmtes Alter überschreitet (DELETE).
Ja, ich will die IP-Adresse prüfen, ob die doppelt vorkommt. Löschen will ich dabei NICHTS!!!
Hallo
Ja, ich will die IP-Adresse prüfen, ob die doppelt vorkommt. Löschen will ich dabei NICHTS!!!
Schau Dir den Thread von nerodrom an, schau Dir sein Ausgangsposting an, schau Dir den (dort nicht zielführenden, aber für Dich interessanten) Beitrag von Hans an. Statt SUM ist für Dich - wie bereits erwähnt - COUNT die richtige Funktion und das Kriterium in der HAVING-Klausel solltest Du selbst hinbekommen.
Freundliche Grüße
Vinzenz
yo,
falls du mit den links n icht weiter gekommen bist, greif ich mal dein beispiel auf:
SELECT name, COUNT(*) AS Anzahl
FROM tab
GROUP BY name
HAVING COUNT(*) > 1
Ilja