J'ai besoin de prendre la dernière valeur de la table où mais si je change J'ai besoin d'obtenir can_id code> égal.
Donc j'ai essayé cette requête SQL ASC code> / desc code> 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. P> com.text code> avec la valeur "Text2" (Durs) P> P> P>
3 Réponses :
La clause Je pense que vous recherchez quelque chose comme ceci: p> 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. SELECT text, can_id
FROM comments
ORDER BY id DESC
LIMIT 1
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;
Dans n'importe quelle version de MySQL, ce qui suit fonctionnera: avec un index sur Ceci est meilleur qu'un groupe Cela devrait avoir une meilleure performance que commentaires (CAN_ID, ID) code>, cela devrait également avoir la meilleure performance . P> Groupe par code>, car il peut utiliser un index et n'est pas limité par une limitation interne sur les longueurs de chaîne intermédiaires. P> row_number () code> car il n'attribue pas un numéro de ligne à chaque ligne, alors de filtrer les choses. P> p>
Merci de conseils, cela fonctionne également) pour que je vais utiliser votre requête, car la performance est importante pour cette requête.
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.