J'ai une requête qui interroge actuellement une table Post
tandis que LEFT JOINing une table Comment
. Il récupère tous les messages et leurs commentaires respectifs. Cependant, je veux limiter le nombre de commentaires retournés. J'ai essayé d'ajouter un sous-select, mais j'ai rencontré des erreurs si je n'ai pas LIMITE les résultats à 1. Je ne suis pas vraiment sûr de la façon de procéder à ce sujet tout en utilisant une seule requête. Est-ce possible?Est-il possible de LIMITER les résultats d'une requête JOIN?
0
A
Répondre
2
Celui-ci devrait obtenir vos messages avec les trois commentaires les plus récents par poste, en supposant que vos tables ressemblent que:
poste:
id
, post_text
commenter:
id
, post_id
, comment_text
SELECT id, post_text, comment_text
FROM
(
SELECT p.id, p.post_text, c.comment_text
CASE
WHEN @id != p.id THEN @row_num := 1
ELSE @row_num := @row_num + 1
END AS rank,
@id := p.id
FROM post p
LEFT JOIN comment c ON (c.post_id = p.id)
JOIN (SELECT @id:=NULL, @row_num:=0) x
ORDER BY p.id,
c.id DESC -- newest comments first
) y
WHERE rank <= 3;
La sous-requête est utilisée pour obtenir des commentaires récents et les numéroter par poste, tandis que les sélections externes Enlève les commentaires plus anciens.
1
Vous ne pouvez pas limiter une jointure, sauf si vous avez une valeur appropriée à filtrer (par exemple, where pos between 1 and 5
). Vous pouvez sélectionner le premier commentaire séparément, le deuxième commentaire, le troisième commentaire et ainsi de suite, et fusionner les résultats. Quelque chose laid comme:
select This, That
from Post
left join (
select Some
from Comment
where PostId = Post.Id
order by CreatedDate
limit 1,1
) x on 1=1
union all
select This, That
from Post
inner join (
select Some
from Comment
where PostId = Post.Id
order by CreatedDate
limit 2,1
) x on 1=1
union all
select This, That
from Post
inner join (
select Some
from Comment
where PostId = Post.Id
order by CreatedDate
limit 3,1
) x on 1=1
Questions connexes
- 1. Comment limiter les résultats d'un LEFT JOIN
- 2. Requête MySQL: LIMITER un JOIN
- 3. possible JOIN pour cette requête
- 4. Comment limiter les résultats de la requête Mysql
- 5. Limiter les résultats de group() dans MongoDB
- 6. Appellation de l'API pour limiter les résultats?
- 7. Limiter les résultats de la table reliée à une ligne
- 8. Comment limiter les résultats par SUM
- 9. Possible de limiter les résultats retournés, mais laisse 'pagination' à table?
- 10. Limiter les résultats d'un enregistrement actif find
- 11. Limiter les résultats Nombre en javax.jdo.Query
- 12. Est-il possible de JOIN avec un var depuis un LEFT JOIN sans détruire les lignes?
- 13. SQL Union/Join requête
- 14. Possibilité de limiter les résultats retournés par NSArray filteredArrayUsingPredicate
- 15. Limiter le nombre de résultats dans JPQL
- 16. Comment limiter une requête de distance MySQL
- 17. solr JOIN requête
- 18. Limiter les résultats de la requête Django pour l'application XML ajax
- 19. MongoDB: Limiter les résultats d'une requête $ gt (à partir de pymongo)
- 20. Existe-t-il un moyen de LIMITER les résultats par groupe de résultats dans MySQL?
- 21. Obtenir les résultats les plus élevés dans un JOIN
- 22. Comment limiter le nombre de résultats obtenus?
- 23. Requête SQL JOIN - Confus
- 24. mysql join requête
- 25. Django .. "join" requête?
- 26. Optimisation de requête MySQL JOIN
- 27. Combiner les résultats de la requête sql
- 28. SQL JOIN aide de la requête
- 29. Limiter le résultat MySQL à un si les résultats correspondent
- 30. SQL: Nécessité de limiter le jeu de résultats en fonction d'une sous-requête
Vous pourriez obtenir de meilleurs résultats si vous publiiez votre requête actuelle. –