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

Pilih Tanggal dan Waktu Paling Awal dari Daftar Sesi Pengguna Berbeda

Ini adalah variasi dari masalah "terbesar-n-per-grup" yang muncul di StackOverflow beberapa kali per minggu.

SELECT 
        a1.accessid, 
        a1.date, 
        a1.time 
FROM 
        accesslog a1
LEFT OUTER JOIN
        accesslog a2
  ON (a1.accessid = a2.accessid AND a1.userid = a2.userid
    AND (a1.date > a2.date OR a1.date = a2.date AND a1.time > a2.time))
WHERE a1.userid = '1234'
  AND a2.accessid IS NULL;

Cara kerjanya adalah kita mencoba mencari baris (a2) yang memiliki accessid dan userid yang sama, dan tanggal atau waktu lebih awal dari baris a1. Ketika kita tidak dapat menemukan baris sebelumnya, maka a1 harus be baris paling awal.

Re komentar Anda, saya baru saja mencobanya dengan data sampel yang Anda berikan. Inilah yang saya dapatkan:

+----------+------------+----------+
| accessid | date       | time     |
+----------+------------+----------+
|        1 | 2009-08-15 | 01:01:01 | 
|        2 | 2009-09-01 | 14:01:01 | 
+----------+------------+----------+

Saya menggunakan MySQL 5.0.75 di Mac OS X.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. buat sisa url api untuk terhubung dengan database mysql

  2. mysql_fetch_array tidak mengambil semua baris

  3. Bagaimana cara menjaga nilai kolom tetap unik di MySQL?

  4. Dapatkan posting dari semua kategori kecuali satu kategori

  5. fungsi php untuk mysql enum dipilih