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

Jak mogę WYBRAĆ wiersze z MAX (wartość kolumny), DISTINCT by MULTIPLE kolumn w SQL?

Typowa metoda wykorzystuje skorelowane podzapytanie:

select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.env = t.env);

Być może nieco lepszą metodą jest:

select t.*
from t
where t.id = (select t2.id
              from t t2 
              where t2.env = t.env
              order by t2.date desc, t2.id desc
              limit 1
             );

Jest to nieco lepsze, ponieważ (1) id jest prawdopodobnie kluczem podstawowym, więc dopasowanie jest szybsze; oraz (2) jeśli w tym samym dniu jest wiele wierszy, zwracany jest tylko jeden wiersz.



  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 ograniczyć głosowanie dziennie według IP w głosowaniu PHP+Mysql?

  2. Mysql::Błąd:Podany klucz był za długi; maksymalna długość klucza to 1000 bajtów

  3. Czy kopiowanie katalogu /var/lib/mysql jest dobrą alternatywą dla mysqldump?

  4. Jak przywrócić zrzut MySQL z hosta do kontenera Docker

  5. Jak wybrać ostatnie N rekordów z tabeli w mysql