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

Bestil inden for gruppe af?

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
        )

Tak skal gå til @Quassnoi . Se hans svar i et lignende (men mere kompliceret) spørgsmål:mysql-group-by-to-display-latest-result

Hvis du opdaterer programs tabel og indstil close_date for alle registreringer, at den er nul til close_date='9999-12-31' , derefter din ORDER BY vil være enklere (og hele forespørgslen hurtigere med korrekte indekser):

        ORDER BY
                pi.close_date DESC


  1. Hvorfor er null<>null=null i mysql

  2. sql-forespørgsel for at returnere forskelle mellem to tabeller

  3. MySQL GROUP BY adfærd

  4. i postgres, kan du indstille standardformateringen for et tidsstempel, efter session eller globalt?