Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grupuj według użytkowników i pokaż najnowsze w MYSQL nie działa

Jak wspomniano w komentarzach do odpowiedzi Robina , takie podejście jest zawodne, ponieważ MySQL nie gwarantuje, że zawsze zwróci najnowszy status z każdej grupy. Zamiast tego musisz dołączyć do tabeli za pomocą podzapytania, które wybiera najnowszy stan (na podstawie addedDate ).

SELECT   *
FROM     status
  NATURAL JOIN (
    SELECT   userID, MAX(addedDate) as addedDate
    FROM     status
    GROUP BY userID
  ) AS mostRecent
ORDER BY addedDate DESC
LIMIT    10

Pamiętaj, że jeśli użytkownik ma wiele aktualizacji statusu z tą samą addedDate , serwer zwróci je wszystkie (podczas gdy zapytanie Robina zwróci nieokreślone); jeśli potrzebujesz kontroli nad taką sytuacją, musisz określić, w jaki sposób określa się, którą aktualizację statusu należy wybrać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zliczyć wiersze z dwóch tabel w jednym zapytaniu?

  2. użyć ponownie wyniku wyrażenia select w klauzuli GROUP BY?

  3. Blokowanie poziomu wiersza w Mysql

  4. Grupa MySQL według kolejnych wartości

  5. Yii CDbConnection nie udało się otworzyć połączenia z bazą danych:nie można znaleźć sterownika w google cloud sql