sql >> Databáze >  >> RDS >> Mysql

Objednat ve skupině podle?

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
        )

Děkujeme vám na adresu @Quassnoi . Viz jeho odpověď v podobné (ale složitější) otázce:mysql-group-by-to-display-latest-result

Pokud aktualizujete programs tabulky a nastavte close_date pro všechny záznamy je to nula k close_date='9999-12-31' , pak vaše ORDER BY bude jednodušší (a celý dotaz rychlejší se správnými indexy):

        ORDER BY
                pi.close_date DESC


  1. Nejlepší fóra o výkonu SQL Serveru pro nápovědu k nejobtížnějším otázkám

  2. MySQL 8 vytvořte nového uživatele s nefunkčním heslem

  3. Chyba Django MySQL při vytváření tabulek

  4. Provedení WHERE IN na více sloupcích v Postgresql