globe: (MySQL) SELECT gleicher Spalteninhalte > 1 mal vorhanden

Beitrag lesen

n'abend,

SELECT id,lastip FROM tbl_members GROUP BY lastip HAVING count(*) > 1

Wo wir wieder bei den Unzulänglichkeiten von MySQL angelangt wären. Prinzipiell sollte diese Query nämlich nicht ausgeführt werden. Das Problem liegt bei der Mischung von gruppierten und ungruppierten Spalten.

Du könntest in einer Query die doppelten Werte und deren jeweilige Anzahl ermitteln. In einer Zweiten Query sammelst du dann die IDs zu den mehrfach vorkommenden IPs. Das kann eine separate Query sein, oder eine Subquery.

Ich würde mir - sofern die Datenbank keine Performanceprobleme zeigt - die folgende Query genauer anschauen:

SELECT t.lastip, m.id  
  FROM ( SELECT lastip, COUNT(*) as weight FROM tbl_members GROUP BY lastip HAVING COUNT(*) > 1 ) as t  
  JOIN tbl_members m  
    ON m.lastip = t.lastip  
 ORDER BY t.weight DESC, lastip;

Dabei betrachten wir das Ergebnis der inneren SELECT-Query als Tabelle, die wir wiederum mit unserer eigentlichen Tabelle verbinden können, um weitere - nicht gruppierte - Daten in unsere Ergebnismenge bringen zu können.

weiterhin schönen abend...

--
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|