Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Grup MySQL berdasarkan ID dan Datetime Terbaru

Saya pikir dengan di bawah ini Anda dapat mencapai apa yang Anda butuhkan, Operasi ini disebut "Group-wise Maximum".

Opsi 1

Ini adalah yang paling mudah dipahami, subquery akan mengembalikan TID maksimum untuk semua pengguna sejak max digunakan bersama dengan Group By dan daripada kami melakukan kueri lain untuk mendapatkan semua data untuk ID tersebut.

 Select TID, TData, TUserID, TViewedAt
 From Test 
 Where TID In(
    Select Max(TID)
    From Test
    Group By TUserID
)

Opsi 2

Sedikit lebih rumit untuk dipahami, tetapi kemungkinan besar lebih efisien, Ini bekerja atas dasar bahwa ketika t1.TViewedAt berada pada nilai maksimumnya, tidak ada t2.TViewedAt dengan nilai yang lebih besar dan nilai baris t2 akan menjadi NULL .

SELECT t1.TID, t1.TData, t1.TUserID, t1.TViewedAt
FROM Test t1
LEFT JOIN Test t2 ON t1.TUserID = t2.TUserID AND t1.TViewedAt < t2.TViewedAt
WHERE t2.TUserID IS NULL;

Hasil

TID TData   TUserID   TViewedAt
4   test3   123       2012-10-05 00:00:00.000
5   test2   213       2012-10-03 00:00:00.000


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan ke dalam tabel yang memiliki tanda hubung pada namanya

  2. Meteor dengan mysql

  3. Format tanggal MySQL DD/MM/YYYY pilih kueri?

  4. Dapatkan semua catatan dari database MySQL yang ada di dalam Google Maps .getBounds?

  5. Kinerja pernyataan Sisipkan MySQL di Java:Pernyataan mode batch yang disiapkan vs sisipan tunggal dengan banyak nilai