Pobieranie najnowszej wersji rekordów ze wspólnym atrybutem

Pobieranie najnowszej wersji rekordów ze wspólnym atrybutem
CA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 60
1

Cześć, mam tabelę z danymi i chciałbym pobrać z niej ID dla najnowszego (time) elementu (elementID) ale w taki sposób, żeby każdy elementID wystąpił tylko jeden raz, w najnowszej wersji, zatem dla poniższej tabeli powinno zwrócić wyniki od ID 3 i 5. Próbowałem z DISTINCT, ale nie bardzo wiem jak się za to zabrać.

Kopiuj
+----------+--------------+------------+
|       id | elementID    |       time |
+----------+--------------+------------+
|        1 |            1 | 1687166175 |
|        2 |            1 | 1687166176 |
|        3 |            1 | 1687166177 |
|        4 |            2 | 1687166178 |
|        5 |            2 | 1687166179 |
+----------+--------------+------------+
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
1

spróbuj grupowania po elementID a potem element maksymalny time w ramach grupy

coś w rodzaju:

Kopiuj
group by elementID
having time = max(time)
CA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 60
0

@KamilAdam: niestety zapytanie:

Kopiuj
SELECT * FROM strony group by elementID having time = max(time)

Zwraca pusty wynik :(

S4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1268
3
catshy napisał(a):

@KamilAdam: niestety zapytanie:

Kopiuj
SELECT * FROM strony group by elementID having time = max(time)

Zwraca pusty wynik :(

Po po pierwsze jak grupujesz to musisz podać w selekt kolumny po których grupujesz.

Kopiuj
select * from (select *, Row_Number() over(partition by elementID order by time desc) as RowNumber from strony) where RowNumber = 1 
AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
0

W jednym z projektów użyliśmy pola datetime "nieaktualny"
pole null - aktualny
wypełnione datetime - czas stania się archiwalnym.

Mam świadmosć, że to inny projekt bazy i nieco inna koncepcja.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.