Mysql
 sql >> Base de données >  >> RDS >> Mysql

Commander au sein du groupe par ?

SELECT  c.*, p.*
FROM    clients AS c
JOIN    programs AS p
ON      p.id = 
        (
        SELECT  pi.id
        FROM    programs AS pi
        WHERE   pi.client_id = c.id
        ORDER BY
                pi.close_date=0 DESC, pi.close_date DESC
        LIMIT 1
        )

Merci d'aller à @Quassnoi . Voir sa réponse dans une question similaire (mais plus compliquée) :mysql-group-by-pour-afficher-le-dernier-résultat

Si vous mettez à jour les programs table et définissez close_date pour tous les enregistrements, il est de zéro à close_date='9999-12-31' , puis votre ORDER BY sera plus simple (et toute la requête plus rapide avec des index appropriés):

        ORDER BY
                pi.close_date DESC