78 votes

Comment sélectionner la première ligne pour chaque groupe dans MySQL?

En C#, ce serait comme ceci :

Linq-To-Sql le traduit en code T-SQL suivant :

Mais il est incompatible avec MySQL.

97voto

lfagundes Points 1032

J’ai basé ma réponse uniquement sur le titre de votre message, car je ne connais pas C# et je n’ai pas compris la requête donnée. Mais dans MySQL, je vous suggère d’essayer les sous-sélections. Obtenez d’abord un ensemble de clés primaires de colonnes intéressantes, puis sélectionnez des données à partir de ces lignes:

25voto

Jader Dias Points 23461

Quand j’écris

Ça marche. IIRC dans d’autres SGBDR, une telle instruction est impossible, car une colonne qui n’appartient pas à la clé de regroupement est référencée sans aucune sorte d’agrégation.

Cette « bizarrerie » se comporte très étroitement avec ce que je veux. Je l’ai donc utilisé pour obtenir le résultat que je voulais:

23voto

lexu Points 5385

Voici une autre façon d’essayer, qui n’a pas besoin de ce champ d’identification.

Pourtant, je suis d’accord avec lfagundes que vous devriez ajouter une clé primaire ..

Attention également qu’en faisant cela, vous ne pouvez pas (facilement) obtenir les autres valeurs est la même ligne que la some_colum résultante, another_column paire! Vous auriez besoin de lfagundes apprach et d’un PK pour le faire!

9voto

mzvarik Points 11

Meilleures performances et facile à utiliser:

7voto

Ricardo Tribaldos Points 683
<pre><code></code><p>Avec MySQL v8+, vous pouvez utiliser les fonctions de fenêtre</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X