Sélection des 3 premières lignes de plusieurs catégories dans MySQL
La sélection des premières lignes de chaque catégorie dans un tableau peut être difficile. Une méthode utilisant des vues et des sous-requêtes, comme indiqué lors de la tentative initiale, peut renvoyer des résultats incorrects.
Une approche plus efficace utilise des fonctions analytiques, que MySQL ne prend pas en charge de manière native. Cependant, il est possible d'émuler ces fonctions à l'aide de variables. Voici comment procéder :
SELECT x.*
FROM (
SELECT t.*,
CASE
WHEN @category != t.category THEN @rownum := 1
ELSE @rownum := @rownum 1
END AS rank,
@category := t.category AS var_category
FROM TBL_ARTIKUJT t
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY t.category
) x
WHERE x.rank Cette requête initialise les variables @rownum et @category à l'aide d'une opération JOIN. Elle attribue ensuite un classement à chaque ligne en fonction de sa catégorie, en incrémentant le classement si la catégorie change.
Enfin, la requête sélectionne uniquement les lignes dont le rang est égal ou inférieur à 3. Notez que vous devrez peut-être modifier la clause SELECT x.* pour inclure uniquement les colonnes souhaitées.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3