Mysql
 sql >> Database >  >> RDS >> Mysql

Ordinare all'interno di un gruppo per?

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
        )

Grazie dovrebbe andare a @Quassnoi . Vedi la sua risposta in una domanda simile (ma più complicata):mysql-gruppo-per-visualizzare-ultimo-risultato

Se aggiorni i programs tabella e imposta close_date per tutti i record che è zero a close_date='9999-12-31' , quindi il tuo ORDER BY sarà più semplice (e l'intera query più veloce con indici appropriati):

        ORDER BY
                pi.close_date DESC