sql >> Databáze >  >> RDS >> Mysql

mysql časové hodiny

Chybí vám GROUP BY klauzule pro váš MAX() agregát. Důvod, proč jste dostali správnou odpověď 12 váš první pokus o dotaz byl pouze proto, že je to náhodou největší ID v tabulce a zároveň shodou okolností patří do emp_id = 1 . Stejný výsledek byste získali pro jakékoli emp_id hodnoty. A GROUP BY klauzule to vyřeší.

Zde je příklad načtení celého řádku pro přidružený záznam:

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

To lze také provést pomocí HAVING klauzule, která nepotřebuje poddotaz:

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

Pro informaci odkaz na agregační funkce MySQL.




  1. Jakýkoli způsob, jak dosáhnout fulltextového vyhledávání na InnoDB

  2. Mysql strip time komponent od datetime

  3. 2 způsoby, jak získat znakové sady dostupné v MariaDB

  4. Co je vůbec hlavní verze?