2012-10-28 4 views
1

J'ai une table dans ma base de données avec des titres de chansons. Il y a plusieurs doublons, mais ils sont légèrement éteints. Par exemple, ma table pourrait ressembler à ceci:Trouver des lignes similaires dans mysql

id title 
1 Photobooth 
2 Photobooth [*] 
3 Photobooth [dvd] 
4 Photobooth [acoustic] 
5 Song for Kelly Huckaby 
6 Song for Kelly Huckaby [*] 

Je suis en train de le décomposer si mes résultats ressembleraient:

1 Photobooth 
5 Song for Kelly Huckaby 

Comment dois-je manipuleront cette requête? Débarrassez tout de [] et trouvez des dups?

+0

Est-ce que les entrées "légèrement off" se terminent toujours par un '[...]'? Vous pourriez probablement utiliser une fonction regex pour éliminer tout ce qui se termine par '\ [. * \] $' Et effectuer un 'GROUP BY' sur l'ensemble résultant. Juste mes 2 cents ... –

+0

Yessir, la majorité des différentes versions de piste sont au format [...]. Il y a une poignée qui ne suivent pas cette mise en forme, mais je suis à l'aise avec la manipulation de ces one-offs manuellement. – Mike

Répondre

3
SELECT DISTINCT CASE WHEN LOCATE('[', title)-1 = -1 
         THEN TRIM(title) 
         ELSE TRIM(LEFT(title, LOCATE('[', title)-1)) 
       END title 
FROM table1 

SQLFiddle Demo

+0

tellement perty! Merci! – Mike

+0

Disons que nous avions une autre rangée, id 7 titre This Love. Cette ligne n'a pas d'autres versions. Existe-t-il un moyen d'exclure cette ligne des résultats? – Mike

+0

oui, vous voulez dire que vous voulez seulement retourner les enregistrements qui a plusieurs versions? veuillez patienter, je mettrai à jour la réponse. –

Questions connexes