0
votes

La dernière valeur utilisant le groupe par

J'ai besoin de prendre la dernière valeur de la table où can_id égal.
Donc j'ai essayé cette requête SQL xxx

mais si je change ASC / desc Dans la première sélection, la seconde sélection sera juste groupe sans tri et prenez la valeur avec le premier identifiant
Cette sélection sera utilisée comme la jointure gauche dans la requête.

Exemple:

Entrez la description de l'image ici

J'ai besoin d'obtenir com.text avec la valeur "Text2" (Durs)


2 commentaires

Veuillez afficher des données de table d'entrée, ainsi que la sortie attendue. Ce n'est pas tout à fait clair ce que vous demandez.


Il ne semble y avoir aucune justification dans l'utilisation d'un groupe ici car il n'y a pas d'agrégation.


3 Réponses :


0
votes

La clause par code> La clause de la sélection interne est redondante car elle est utilisée comme une table et des tables dans une base de données relationnelle ne sont pas commandées par nature.
Bien que d'autres bases de données telles que SQL Server soient traitées comme une erreur, je suppose que mysql l'ignore simplement.

Je pense que vous recherchez quelque chose comme ceci: p>

SELECT text, can_id
FROM comments
ORDER BY id DESC
LIMIT 1


0 commentaires

1
votes

Si vous êtes sur MySQL 8, vous pouvez utiliser Row_Number code> :

SELECT SUBSTRING_INDEX(group_concat(text order by id desc), ',', 1), 
       can_id 
FROM   comments 
GROUP BY can_id;


0 commentaires

0
votes

Dans n'importe quelle version de MySQL, ce qui suit fonctionnera: xxx

avec un index sur commentaires (CAN_ID, ID) , cela devrait également avoir la meilleure performance .

Ceci est meilleur qu'un groupe Groupe par , car il peut utiliser un index et n'est pas limité par une limitation interne sur les longueurs de chaîne intermédiaires.

Cela devrait avoir une meilleure performance que row_number () car il n'attribue pas un numéro de ligne à chaque ligne, alors de filtrer les choses.


1 commentaires

Merci de conseils, cela fonctionne également) pour que je vais utiliser votre requête, car la performance est importante pour cette requête.