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

MySql :Bestil efter og gruppe Ved at kombinere ikke at give den seneste rekord

Hvordan kan du GROUP BY id_thread når der ikke er nogen id_thread kolonne i din tabel?

SELECT * 
FROM contacts 
WHERE id_receiver = 1 
                                 --- GROUP BY id_thread
                                 --- removed 
ORDER BY created DESC
LIMIT 1                          --- only show one row

Baseret på dine kommentarer, er det, du ønsker, det seneste (ordnet efter created). ) række for hver id_thread , som er en anderledes og mere kompleks forespørgsel. Der er endda et tag til denne slags forespørgsler, kaldet [greatest-n-per-group] .

SELECT c.* 
FROM contacts AS c
  JOIN
    ( SELECT id_thread, MAX(created) AS created 
      FROM contacts 
      WHERE id_receiver = 1  
      GROUP BY id_thread
    ) AS g 
    ON (g.id_thread, g.created) = (c.id_thread, c.created) 
WHERE c.id_receiver = 1  


  1. Kombination af resultater fra to tabeller til JSON-data

  2. Er det bedre at bruge en tom værdi som '' eller som NULL?

  3. MySQL Views - Hvornår skal du bruge og hvornår ikke

  4. Sådan installeres MySQL 8.0 på CentOS 8 / RHEL 8