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

Bestil resultat fra Mysql-gruppe efter

  • Brug af JOIN

og en forespørgsel med GROUP BY for at få maksimalt id for hver kategori (jeg gætter på, at du vil have rækken med maksimalt id for hver kategori, ikke?)

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
  • Brug af IN

og en forespørgsel for at få maksimalt id for hver kategori

SELECT id
     , title
     , created
     , updated
     , category
     , content
FROM entries
WHERE id IN
    ( SELECT max(id)
      FROM entries
      GROUP BY category
    )
  • Brug af ALLE

og en korreleret underforespørgsel

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
    )
  • Bruger IKKE EKSISTERER

og en korreleret underforespørgsel

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
    )


  1. 8 måder at tilføje mikrosekunder til en Datetime-værdi i MariaDB

  2. Forbedrer begrænsning af en forespørgsel til én post ydeevnen

  3. Hvordan make_timestamptz() virker i PostgreSQL

  4. Mysql vælg Forespørgsel med flere betingelser i samme kolonne