2011-10-05 9 views
1

Est-ce que quelqu'un peut "décomposer" la syntaxe ici? S'il vous plaît. J'ai besoin d'apprendre cela dès que possible.Syntaxe MySQL INNER JOIN

D'après mon expérience limitée -

firstname et lastname sont des colonnes et list est une table.

count(id)>1 est utilisé pour vérifier s'il y a plus d'une ligne avec le même ...

Voilà. Je ne sais pas ce que cela fait mais je dois le comprendre.

SELECT firstname, lastname, list.address FROM list 
INNER JOIN (SELECT address FROM list 
      GROUP BY address 
      HAVING count(id) > 1) dup 
    ON list.address = dup.address 
+0

'dup' est un nom pour l'expression de table dans la sous-requête; parfois (de préférence, dans mon expérience) préfixé par «AS». –

+0

Oui: 'dup' est un identifiant, pas un mot-clé. Le point sépare le nom de la table ('dup') du nom de la colonne' address'. C'est la notation SQL standard ... combien de SQL connaissez-vous réellement? –

+0

merci pour l'aide. –

Répondre

5

Cette requête renverra une liste de tous les noms (prénom et nom), qui contiennent une adresse en double. Cette partie

SELECT address FROM list 
GROUP BY address HAVING count(id) > 1 

Obtient une liste de toutes les adresses qui se produisent plus d'une fois dans le tableau, Il est ensuite rejoint à la table elle-même, de retourner tous les noms qui ont la même adresse. Cela devrait renvoyer une liste de toutes les adresses uniques auxquelles sont associés plus d'un nom, ainsi que les noms qui accompagnent les adresses.

+0

J'ai besoin de tous les dupliqués sélectionnés –

+1

Cela retournera tous les doublons. – Kibbee

+0

désolé j'apprends ... il retournera chaque rangée donc s'il y a 5 adresses dupliquées cela retournera ces 5 rangées? –