sql >> Database >  >> RDS >> Mysql

Selecteer rij met meest recente datum per gebruiker

Vraag:

SQLFIDDLEVoorbeeld

SELECT t1.*
FROM lms_attendance t1
WHERE t1.time = (SELECT MAX(t2.time)
                 FROM lms_attendance t2
                 WHERE t2.user = t1.user)

Resultaat:

| ID | USER |       TIME |  IO |
--------------------------------
|  2 |    9 | 1370931664 | out |
|  3 |    6 | 1370932128 | out |
|  5 |   12 | 1370933037 |  in |

Oplossing die altijd werkt:

SQLFIDDLEVoorbeeld

SELECT t1.*
FROM lms_attendance t1
WHERE t1.id = (SELECT t2.id
                 FROM lms_attendance t2
                 WHERE t2.user = t1.user            
                 ORDER BY t2.id DESC
                 LIMIT 1)


  1. Hoe PostgreSQL logische replicatie te optimaliseren

  2. MijnISAM versus InnoDB

  3. Hoe voorkom je dat PDO een vraagteken als een tijdelijke aanduiding interpreteert?

  4. Hoe het langzame query-logboek in MySQL in te schakelen?