J'ai une table avec colonne d'année et cette colonne ne doit pas avoir de valeurs en double. Donc, je me retrouve avec une table avec une seule année 2007 année, par exemple. P>
Alors, comment puis-je supprimer ces lignes qui ont une valeur de l'année en double? p>
merci p>
3 Réponses :
Je pense que vous pourriez simplement essayer d'ajouter un index unique en utilisant Ignorer:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
Merci parfaitement au travail, mais est-il possible de l'appliquer sur deux colonnes?
La réponse acceptée fonctionne parfaitement, mais Bien que après que vous puissiez supprimer Ici, vous pouvez modifier la liste des colonnes dans Ici, je veux aussi mentionner un point: strong> p> Ignore code> ID de mots-clés amorti strong> ( source ), il ne fonctionnera pas après MySQL 5.6 (peut être).
alter Table code> est très facile et direct, mais maintenant La seule option consiste à créer une nouvelle table par une requête comme celle-ci: p>
groupe par code> en fonction de votre besoin (dans toutes les colonnes à une colonne, ou quelques colonnes qui avoir des valeurs dupliquées ensemble). p>
null code> comme valeur. Ex:
null, 1, "Asdsa" code> peut être stocké deux fois li>
null code> valeurs (pour cette colonne) resteront dans le tableau li>
Create Table code> est, il fonctionnera avec des valeurs nulles également. li>
ol> p>
'Groupe par' ne fonctionne pas si des colonnes SELECT n'ont pas de dépendance sur les colonnes "Groupe par". Voir 'seul_full_group_by' sql_mode. Vous pouvez changer le SQL_MODE mais je n'ai pas pu faire cela avec Knex (mon orme). J'ai fini par faire le filtrage des résultats SQL renvoyés dans le code. p>
Si vous avez par exemple 3 lignes en double jusqu'à l'année 2008, que vous décidez de supprimer?
Dupliquer de Stackoverflow.com/q/18932/80714 La réponse est claire et concise.
Ce n'est pas la même question