Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ordenar dentro do 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
        )

Obrigado deve ir para @Quassnoi . Veja a resposta dele em uma pergunta semelhante (mas mais complicada):mysql-group-by-to-display-latest-result

Se você atualizar os programs table e defina close_date para todos os registros que é zero a close_date='9999-12-31' , então seu ORDER BY será mais simples (e toda a consulta mais rápida com índices adequados):
        ORDER BY
                pi.close_date DESC