sql >> Base de Datos >  >> RDS >> Mysql

¿Ordenar dentro del grupo por?

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
        )

Gracias debería ir a @Quassnoi . Vea su respuesta en una pregunta similar (pero más complicada):mysql-group-by-to-display-lastest-result

Si actualiza los programs tabla y establecer close_date para todos los registros que es cero a close_date='9999-12-31' , luego su ORDER BY será más simple (y toda la consulta más rápida con los índices adecuados):

        ORDER BY
                pi.close_date DESC