IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[MySQL 8] - DISTINCT ou GROUP BY en tenant compte de la casse


Sujet :

Requêtes MySQL

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut [MySQL 8] - DISTINCT ou GROUP BY en tenant compte de la casse
    Bonjour à tou(te)s

    Je bute sur un truc tout bête.
    Une table a une colonne contenant des noms qui peuvent être identiques si on ne tient pas compte de la casse.
    Exemple :
    PIERRE
    Pierre
    PIeRrE
    etc.

    Mais on peut avoir bien sûr plusieurs occurrences de PIERRE, Pierre, etc.

    Mes requêtes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT lastname FROM users WHERE lastname = 'PIERRE'
    renvoie toutes les lignes en distinguant la casse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT lastname FROM users WHERE lastname = BINARY 'PIERRE'
    renvoie toutes les lignes 'PIERRE' en tenant compte de la casse.

    Jusque là, tout va bien !

    Si j'enlève le BINARY et que je rajoute le mot DISTINCT, je m'attends à trouver autant de lignes de valeurs avec des casses différentes, mais non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT lastname FROM users WHERE lastname = 'PIERRE'
    Le DISTINCT filtre et me renvoie le premier qu'il trouve uniquement.

    Question :est-il possible d'obtenir en une seule requête

    PIERRE
    Pierre
    PIeRrE

    même si ma table contient

    PIERRE
    PIeRrE
    PIERRE
    PIERRE
    Pierre
    PIeRrE
    Pierre
    Pierre
    PIeRrE
    Pierre
    Pierre

  2. #2
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT lastname 
    FROM users 
    GROUP BY BINARY lastname

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Effectivement, ça le fait.

    J'avais essayé mais en faisant un

    GROUP BY BINARY 1

    pour grouper sur la première colonne de la requête mais ça n'a pas fonctionné.

    Mais oui, en mettant le nom du champ, ça passe.

    Je ne comprends pas la différence entre les 2 syntaxes mais au moins j'ai mon résultat.

    Merci

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    ou également SELECT DISTINCT(upper(lastname))

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    ça ne donne pas le même résultat ici. Le résultat ne contient que la valeur en majuscules. :-(

    J'ai essayé aussi avec "COLLATE utf8mb4_bin" après chaque nom de champ et ça fonctionne bien.

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Papy214.

    Juste une remarque, en anglais, le prénom se dit "firstname".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/09/2009, 15h08
  2. Distinct ou GROUP BY?
    Par charliejo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/08/2008, 09h52
  3. DISTINCT versus GROUP BY
    Par SergioMaster dans le forum SQL
    Réponses: 5
    Dernier message: 01/04/2008, 07h43
  4. [mysql->oracle 9i] compatibilité "group by" ?
    Par cmoicmoi dans le forum Oracle
    Réponses: 2
    Dernier message: 27/10/2006, 18h58
  5. [MySQL] Question sur les GROUP BY
    Par Coladin dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/04/2006, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo