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

Pobierz ostatni niepusty rekord każdej kolumny dla każdego identyfikatora rekordu w MySQL

Ten może rozwiązać Twój problem:

select 
  record_id,
  substring_index(group_concat(Data1 order by Time desc), ',', 1) Data1,
  substring_index(group_concat(Data2 order by Time desc), ',', 1) Data2,
  substring_index(group_concat(Time  order by Time desc), ',', 1) Time
from records
group by record_id
;

Może nie jest tak szybki jak inne odpowiedzi, ale to inna wersja... spróbuj. Jeśli masz Data3 kolumny w tabeli, możesz skopiować/wkleić Data1 i po prostu zmień wszystkie odniesienia z tej kolumny na nowe.

Aby wyjaśnić, jak to działa:group_concat funkcja łączy wszystkie niezerowe wartości kolumny z separatorem (, domyślnie). Kolumnę można zamówić przed konkatenacją. Działa trochę jak funkcja okna w Oracle, Postgre i innych... substring_index po prostu otrzymuje pierwszą połączoną wartość, ponieważ lista jest ułożona w porządku malejącym w czasie.



  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 połączyć wartość z innej tabeli za pomocą tej samej wartości warunku

  2. Przekazywanie zmiennej do zapytania GoLang

  3. CodeIgniter „MySQL odszedł”

  4. Zamówienie MySQL za pomocą dwóch kolumn

  5. łączenie zewnętrznej bazy danych mysql z php