sql >> Database teknologi >  >> RDS >> Mysql

mysql ur

Du mangler en GROUP BY klausul for din MAX() samlet. Grunden til at du fik det rigtige svar 12 for dit første forespørgselsforsøg var blot, fordi det tilfældigvis er det bedste ID i tabellen, mens det også tilfældigt hører til emp_id = 1 . Du ville have fået det samme resultat for enhver af emp_id værdier. En GROUP BY klausul vil ordne dette.

Her er et eksempel på at hente hele rækken for den tilknyttede post:

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

Dette kan også gøres med en HAVING klausul, der ikke behøver underforespørgslen:

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

Til reference, referencen for MySQL-aggregater.




  1. 3 måder at returnere Modulo i MariaDB

  2. SQL-forespørgsel til at tælle registrerede brugere pr. dag

  3. Brug af et Alias ​​i en WHERE-klausul

  4. Hvordan laver man en accent og ufølsom søgning i MediaWiki-databasen?