Je voudrais trouver tous les enregistrements en double par nom dans une table client en utilisant MySQL, y compris ceux qui ne correspondent pas exactement.Trouver des enregistrements en double dans MySQL en utilisant LIKE
Je sais que je peux utiliser la requête
SELECT id, name FROM customer GROUP BY name HAVING count(*) > 1;
pour trouver toutes les lignes qui correspondent exactement, mais je veux trouver toutes les lignes en double correspondant à une clause LIKE
. Par exemple, il pourrait y avoir un client avec le nom "Mark's Widgets" et un autre "Mark's Widgets Inc." Je voudrais que ma requête les trouve en tant que doublons. Je sais que c'est complètement incorrect, mais c'est l'idée. Voici le schéma mesure:
mysql> describe customer;
+-----------------------------+--------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------+------+-----+------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(140) | NO | | NULL | |
...
EDIT: Pour clarifier les choses, je veux trouver tous les doublons, et pas seulement les doublons d'un nom de client spécifique.
Je pense qu'un bon début est un nom étant une sous-chaîne d'un autre. Le type de correspondance que je cherchais était name1 LIKE% name2% – markb
@markb, OK j'ai édité une solution possible. –
Voici la syntaxe MySQL: SELECT t1.ID, t1.name FROM client t1 LEFT OUTER JOIN client t2 ON t1.name LIKE CONCAT ('%', t2.nom, '%') grouper par t1.ID COMPTE comptant (*)> 1; – markb