2017-07-27 1 views
1

Dies ist meine aktuellen Daten in der Datenbank.Wählen Sie max Datum und maximale Zeit von Abfrage

======================================== 
    id | IC  |date   |time  | 
    1 | test |2017-07-27 |14:19:26 | 
    2 | test |2017-07-27 |14:20:26 | 
    3 | second |2017-07-28 |06:58:55 | 
    ======================================== 

Ich möchte die maxdate und maxtime für jeden IC erhalten.

Ich habe versucht:

SELECT id,pass_no,time_in,ic,date_in FROM `check_in` 
WHERE date_in = (SELECT MAX(date_in) FROM check_in) 
AND 
time_in = (SELECT MAX(time_in) FROM check_in) GROUP BY IC 

Aber es nur die letzten Zeilendaten für mich zurück. Das Ergebnis, das ich ist wie wollte

======================================== 
    id | IC  |date   |time  | 
    2 | test |2017-07-27 |14:20:26 | 
    3 | second |2017-07-28 |06:58:55 | 
    ======================================== 
+0

Siehe diesen Link bereits von jemandem gefragt. https://stackoverflow.com/questions/22629307/mysql-select-where-max-date-and-max-time –

+0

Speichern Sie Daten und Zeiten als einzelne Einheiten – Strawberry

Antwort

0

Sie ein Tupel und Gruppe von ic verwenden können

SELECT id,pass_no,time_in,ic,date_in 
    FROM `check_in` 
    WHERE (date_in, time_in, ic) in (
     SELECT MAX(date_in), max(time_id), ic 
      FROM check_in 
      GROUP BY id) 
+0

schön Ihre Antwort funktioniert! – ron

2

Dies kehrt die max Datum & Zeit pro ic:

select ic, max(date), max(time) 
from check_in 
group by ic 
+0

aber diese Return-ID 1 und 3 Ich habe versucht, ich will ID 2 und 3 – ron

+0

@ron Warum hast du es in deiner Frage nicht richtig beschrieben? Es sagt nur: "Ich möchte die maxdate und maxtime für jeden IC erhalten." Nichts über ID. –

0

Diese Arbeit sollte

select max(time),date,id 
from (select max(date) as date,time,id from check-in group by time,id) 
group by date,id; 
0

Haben Sie versucht, mit "ODER" statt "AND" zu arbeiten?

Verwandte Themen