Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sortieren Sie das Ergebnis aus der Mysql-Gruppe nach

  • Join verwenden

und eine Abfrage mit GROUP BY um die maximale ID für jede Kategorie zu erhalten (ich schätze, Sie wollen die Zeile mit der maximalen ID für jede Kategorie, nicht wahr?)

SELECT e.id
     , e.title
     , e.created
     , e.updated
     , e.category
     , e.content
FROM entries e
JOIN
    ( SELECT max(id) AS maxid
      FROM entries
      GROUP BY category
    ) AS cat
ON e.id = cat.maxid
  • Eingabe verwenden

und eine Abfrage, um die maximale ID für jede Kategorie zu erhalten

SELECT id
     , title
     , created
     , updated
     , category
     , content
FROM entries
WHERE id IN
    ( SELECT max(id)
      FROM entries
      GROUP BY category
    )
  • Beliebig verwenden

und eine korrelierte Unterabfrage

SELECT e.id
     , e.title
     , e.created
     , e.updated
     , e.category
     , e.content
FROM entries e
WHERE e.id >= ANY
    ( SELECT cat.id
      FROM entries cat
      WHERE e.category = cat.category
    )
  • Verwendung von NOT EXISTS

und eine korrelierte Unterabfrage

SELECT e.id
     , e.title
     , e.created
     , e.updated
     , e.category
     , e.content
FROM entries e
WHERE NOT EXISTS
    ( SELECT 1
      FROM entries cat
      WHERE cat.id > e.id
        AND e.category = cat.category
    )