Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql zeituhr

Ihnen fehlt ein GROUP BY -Klausel für Ihr MAX() Aggregat. Der Grund, warum Sie die richtige Antwort erhalten haben 12 denn Ihr erster Abfrageversuch lag lediglich daran, dass dies zufällig die größte ID in der Tabelle ist und zufällig auch zu emp_id = 1 gehört . Sie hätten dasselbe Ergebnis für alle emp_id erhalten Werte. Ein GROUP BY Klausel wird dies klären.

Hier ist ein Beispiel zum Abrufen der gesamten Zeile für den zugehörigen Datensatz:

SELECT * FROM timeclock 
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);

Dies kann auch mit einem HAVING erfolgen -Klausel, die die Unterabfrage nicht benötigt:

SELECT action 
FROM timeclock 
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);

Als Referenz dient die Referenz zu den MySQL-Aggregatfunktionen.