0
votes

MySQL - groupe par et sélectionner la valeur max

J'ai les tables suivantes:

réserva_tanatosalas strong> Entrez la description de l'image ici p>

J'ai la requête suivante: p> xxx pré>

résultats: strong> est Affichage de la valeur maximale droite mais le mauvais cod_reserva code>. Pourquoi? P>

cod_reserva  MAX(r.hora_fin_utc)
7           9999999999
8           9999999999


3 commentaires

Pouvez-vous montrer toutes les colonnes de l'image?


La photo montre toutes les colonnes.


double possible de SQL sélectionner uniquement les lignes avec la valeur maximale sur une colonne


4 Réponses :


1
votes

N'utilisez pas groupe par code> pour cela. Votre requête est mal formée et ne fonctionnera pas dans les versions les plus récentes de MySQL (avec les paramètres par défaut) ou presque toutes les bases de données.

SELECT r.cod_reserva, MAX(r.cod_tanatosala) FROM reservas_tanatosalas r
GROUP BY r.cod_tanatosala
HAVING MAX(r.hora_fin_utc)


4 commentaires

Quelle est la raison de ne pas utiliser de groupe par?


@Shoyebsheikh est là un moyen d'utiliser le groupe par?


@Gordonlinoff Vous avez raison "avoir" est inutile ici. J'étais confuse d'essayer de choisir une ligne après le groupe. Merci d'avoir répondu.


@RICARDO Vérifiez ma réponse, j'ai trouvé un travail avec groupe par clause



0
votes

Vous regroupez les résultatsset à l'aide d'une colonne différente, tandis que votre instruction SELECT fait référence à une autre. Vous devriez certainement fonctionner, s'il vous plaît laissez-moi savoir s'il ne: xxx


0 commentaires

0
votes

J'ai couru la même requête que la même requête que le vôtre, xxx

mais j'ai utilisé une fonction d'agrégate max () sur r.cod_reserva, car sans cela donne une erreur "Ceci est incompatible avec sql_mode = Seul_full_group_by "et je l'ai eu fonctionner, vous pouvez le tester avec max (R.cod_reserva).


0 commentaires

0
votes

Tout d'abord dans la plupart des bases de données, y compris la nouvelle version de MySQL, ce code émettra une erreur pendant que vous regroupez par une colonne qui ne fait pas partie de SELECT. La requête suivante vous donnera ce que vous êtes après pour le jeu de données que vous avez montré

select (select t.cod_reserva from reservas_tanatosalas t 
        where t.hora_fin_utc = a.max_hora_fin_utc 
        and a.cod_tanatosala = t.cod_tanatosala) cod_reserva, 
        a.max_hora_fin_utc
from (
    SELECT x.cod_tanatosala, MAX(x.hora_fin_utc)max_hora_fin_utc
    FROM reservas_tanatosalas x group by x.cod_tanatosala
)a;


0 commentaires