7
votes

obtenir des données d'un grand nombre de relations db

J'ai une table qui détient des commentaires utilisateur et je souhaite récupérer le dernier commentaire effectué par chaque utilisateur.

La requête ci-dessous devrait vous donner une idée de ce que j'essaie de faire xxx < / Pre>

Quelque requeut fonctionne, mais prend trop longtemps, surtout s'il y a beaucoup d'userids.

J'ai besoin d'une déclaration de requête plus rapide qui accomplit la même chose.


0 commentaires

3 Réponses :


9
votes

Utilisez une jointure au lieu d'une sous-requête:

SELECT
    b.*
FROM
    (
        SELECT userid, MAX(comment_id) AS maxcomment
        FROM comments_table
        WHERE userid IN (2001, 2002, 2010)
        GROUP BY userid
    ) a
INNER JOIN
    comments_table b ON 
        a.userid = b.userid AND
        a.maxcomment = b.comment_id


3 commentaires

Que devrais-je ajouter à la requête ci-dessus s'il y a une autre table appelée user_details comme vous que je souhaite extraire également des colonnes u.mainImage et u.fullName peut-être utiliser b.user_id = u.user_id


Quelle table user_details connectez-vous? La table des commentaires? Table des utilisateurs?


User_Details Tableau Tableau principale est user_id et ceci est une clé étrangère dans les commentaires_table.



0
votes

Essayez avec

         select comment, comment_id, userId FROM          comments_table WHERE userId in (2001, 2002, 2010) order by comment_id desc limit 1


1 commentaires

Cela ne récupérera qu'une ligne: le dernier commentaire le plus récent de l'un des trois utilisateurs . Le O.P. demande le dernier commentaire de chacun des trois utilisateurs, ce qui signifie que vous devez effectuer un maximum de groupe pour les commentaires effectués par chaque utilisateur.



0
votes

Gardons-le simples:

SELECT comment, MAX(comment_id), userId 
FROM comments_table 
WHERE userId IN (2001, 2002, 2010) 
GROUP BY userId;


1 commentaires

Cette solution tirera le plus récent COMMENT_ID par userID , mais le champ ne sera pas dans la correspondance correcte avec le COMMENT_ID .