Requête MySql: Sélectionnez les 3 premières lignes du tableau pour chaque catégorie
J'ai une table avec des enregistrements et il a une ligne appelée category
. J'ai inséré un trop grand nombre d'articles et je veux choisir seulement deux articles de chaque catégorie.
J'ai essayé de faire quelque chose comme ceci:
J'ai créé une vue:
CREATE VIEW limitrows AS
SELECT * FROM tbl_artikujt ORDER BY articleid DESC LIMIT 2
Puis j'ai créé cette requête:
SELECT *
FROM tbl_artikujt
WHERE
artikullid IN
(
SELECT artikullid
FROM limitrows
ORDER BY category DESC
)
ORDER BY category DESC;
Mais cela ne fonctionne pas et me donne seulement deux dossiers?
source d'informationauteur AXheladini | 2010-06-29
Vous devez vous connecter pour publier un commentaire.
LIMITE ne s'arrête que le nombre de résultats de l'instruction retourne. Ce que vous cherchez est généralement appelé analytique/fenêtres/les fonctions de classement - qui MySQL ne supporte pas, mais vous pouvez émuler à l'aide de variables:
Si vous ne modifiez pas
SELECT x.*
le jeu de résultats comprendront lesrank
etvar_category
valeurs, vous aurez à spécifier les colonnes que vous voulez vraiment, si ce n'est pas le cas.Lire cet article: Top N d'un groupe
Utilisation de group by au lieu de la commande par.