MySQL - éviter les doublons dans un SELECT

LeVraiDocteur

Expert
Bonjour à tous,
J’ai souvent rencontrer un problème recurrent en utilisant MySQL, c’est la creation de doublons dans une requête SELECT.
J’utilise cette fonction pour ensuite creer une vue une vue a partir d'une requête SELECT, mais le problème c’est qu’il apparait en double.
Je me suis donc poser la question à savoir comment éviter ces doublons dans les résultats d'une requête SQL ? Et voici ce que j’ai pu obtenir d’internet :

Tout d’abord il faut savoir que SELECT est utilisé pour récupérer les lignes sélectionnées à partir d'une ou plusieurs tables.
Les fonctions les plus couramment utilisés par SELECT sont les suivantes:
- Chaque expression SELECT indique une colonne que vous souhaitez récupérer. Il doit y avoir au moins une expression SELECT .
- table_references indique la ou les tables à partir duquel récupérer les lignes.
- Le WHERE clause, indique la ou les conditions que les lignes doivent satisfaire pour être sélectionnées. where_condition est une expression qui renvoie directement à chaque ligne sélectionnée. Si toutes les lignes sont selectionnes, il n'y aura pas WHERE clause.
- Dans le WHERE expression, vous pouvez utiliser l'une des fonctions et des opérateurs MySQL qui les prend en charge, sauf pour les fonctions d'agrégation (résumé).
- SELECT peut également être utilisé pour exécuter des calculs sans référence à une table.

La solution propose pour eviter les doublons est simplement d’utiliser la clause DISTINCT entre SELECT et les champs.

l’exemple donne est :
SELECT DISTINCT id,nom,prenom FROM matable

Si vous utilisez FOR UPDATE avec un moteur de stockage qui utilise des pages ou des lignes verrouillé, des lignes examinées par la requête sont en écriture verrouillé jusqu'à la fin de la transaction en cours. Utiliser LOCK IN SHARE MODE, il va définir un verrou partagé qui permet à d'autres transactions de lire les lignes examinés mais pas de mettre à jour ou les supprimer.
Après le SELECT du mot-clé, vous pouvez utiliser un certain nombre d'options qui affectent le fonctionnement de la déclaration. HIGH_PRIORITY , STRAIGHT_JOIN et les options commençant par SQL_ sont des extensions de MySQL à la norme SQL.
Les ALL et DISTINCT options spécifient si les doublons doivent être supprimé. ALL (par défaut) indique que toutes les lignes correspondantes doivent être supprimé, y compris les doublons. DISTINCT précise suppression des doublons dans le jeu de résultats. C'est une erreur de spécifier les deux options. DISTINCTROW est synonyme de DISTINCT .

Si vous aussi vous avez des astuces n’hésitez surtout pas.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 845
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut