SQL ORDER BY ASC LIMIT 1 à l'exception des multiples d'un même résultats meilleure méthode?
Je suis encore à apprendre SQL donc je me demandais si il ya une meilleure façon de faire les suivants.
J'ai besoin d'obtenir des données de ligne pour la plus basse et la plus élevée des valeurs dans une colonne (appelons cela columnA).
Je voudrais utiliser:
SELECT *
FROM table
ORDER BY columnA
DESC LIMIT 1
Problème est que je obtenir un seul résultat en raison de la LIMIT 1
mais il y a peut être identique plus bas /plus haut les valeurs de ColumnA qui ont des valeurs différentes dans les autres colonnes. J'ai besoin de ces autres lignes aussi.
Il est SELECT(MAX)
mais je crois que vais en outre produire une ligne de données.
Les façons que je peux penser à faire cela en mettant le plus haut /plus bas de la columnA de valeurs dans une variable et ensuite de retour dans une seconde requête OR
utiliser un LEFT JOIN
sur les tables d'alias pour ce faire dans une seule requête, mais est-il plus directe de la méthode?
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple est d'effectuer une sous-requête:
Vous pouvez même interroger les deux extrêmes, à la fois:
Je n'ai pas testé la suivante (je ne sais pas si MySQL supporte
UNION
dansles sous-requêtes), mais il devrait fonctionner aussi bien, peut-être un peu plus
efficace (en fonction de la taille des données).
Une autre option est :
where
condition, dit - donnez-moi des lignes , tels que n'existe pas une ligne avec une plus grande valeur - c'est à dire de me donner uniquement les lignes avec une valeur max..