-1
votes

Groupe par ne fait pas de distinction, obtentiez toujours un ensemble de résultats entiers

J'utilise MySQL 8.

J'ai un système de messages avec un schéma, comme: xxx

si j'ai quatre lignes dans le message table, comme ceci: xxx

... Et puis je interne la table, alors je m'attends à un ensemble de résultats qui est un "instantané" des derniers messages non lâchés , avec une distinction faite sur le to_id , pour ressembler à ceci: xxx

Cependant, lorsque j'exécute la requête ci-dessous: < PRE> XXX

Mon ensemble de résultats ressemble à ceci: xxx

Il ignore essentiellement complètement le groupe par clause ici. J'ai déjà passé beaucoup de temps à ce sujet, je n'arrive pas à comprendre. Qu'est-ce que je fais mal?


2 commentaires

Que se passe-t-il avec les alias de table de compte? Cela semble trop compliqué. Voir ici ... dev.mysql.com/doc/refman/8.0 /en/join.html


Votre requête a un groupe par Message.Id qui a la définition ID INT non signé non null auto_incrètent . Ainsi, les entrées de la table basées sur ID seront toujours uniques alors regroupement par Message.Id retournera tous les résultats.


3 Réponses :


1
votes

Si vous souhaitez le dernier message pour chaque paire d'utilisateurs, je commencerais avec la sous-requête corrélée: xxx

Je ne sais pas ce que l'autre filtrage est pour votre requête. < / p>

Vous pouvez également faire cela avec les fonctions de fenêtre: xxx

car la table est uniquement référencée une fois, cela facilite la mise en place d'autres tables et filtres.


1 commentaires

L'autre filtrage est pour la pagination rapide, donc comme où Message.Id> 100 limite 100 à la page via la table plus efficacement que limite 100 100 . Mais de toute façon, cela n'est pas pertinent pour cela, donc je l'ai supprimé. Merci pour votre suggestion, essayez-la maintenant.



0
votes

pourrait-il être aussi simple que:

select max(id) id, max(to_id) to_id, from_id
from...
group by from_id


0 commentaires

0
votes

Utilisez cette requête:

select `distinct message.id, message.to_id, message.from_id`


0 commentaires