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

MySQL pobiera rekordy ostatniej daty z wielu

możesz użyj GROUP BY , ale ważne jest, aby zrozumieć, jak to działa.

Gdy używasz GROUP BY grupa wierszy jest zwinięta w jeden, a to, co jest wyświetlane w innych kolumnach, które nie są używane w Twojej GROUP BY jest określana za pomocą funkcji agregujących lub jest to losowy wiersz z tej grupy. Nie możesz być pewien, że otrzymasz wiersz odpowiadający wierszowi wyświetlanemu z MAX() wartości lub dowolnej użytej funkcji agregującej. Staje się to szczególnie oczywiste, gdy wykonujesz zapytanie typu:

SELECT id, MIN(whatever), MAX(whatever), another_column
FROM your_table
GROUP BY id

„inna_kolumna” może należeć do wiersza zawierającego wartość MIN() lub MAX() lub nawet do innego wiersza, który w ogóle nie jest wyświetlany. W innych RDBMS niż MySQL zabronione jest wybieranie kolumn, które nie używają funkcji agregujących lub nie są wymienione w GROUP BY klauzuli, tylko po to, aby użytkownicy nie popełnili błędu lub nie pomyśleli, że uzyskali właściwy wynik.

Tak więc w twoim przypadku wydaje się, że chcesz wyświetlić również kolumnę „wartość”. Z powyższych powodów odpowiedź juergen_d jest błędna, ponieważ nie wybiera „wartości”, a gdyby tak było, nie można być pewnym, że jest to właściwa „wartość”. Odpowiedź Filipe Silvy jest błędna, ponieważ grupuje według „wartości”. Spowoduje to w twoim przypadku faktycznie zwrócenie całego stołu. Odpowiedź Romesha jest błędna, ponieważ użycie dwukrotności MAX() funkcja da ci maksymalne wartości, oczywiście, ale nie wartość odpowiadającą wartości daty i godziny.

Więc jak masz to zrobić? Tutaj opisano 3 sposoby . Naucz się ich, stosując je samodzielnie. To nie takie trudne :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. porównaj wartość ze wszystkimi polami tabeli w mysql

  2. Używanie grup nieprzechwytujących w MySQL REGEXP

  3. Wybierz oddzielne wiersze z dwóch tabel, uporządkuj według daty

  4. Zapytanie MySQL otrzymuje wartość przecinkiem oddzielonym od tabeli szczegółów głównych

  5. Jak można połączyć te dwie instrukcje SQL w jedno?