Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql zegar

Brakuje elementu GROUP BY klauzula dla twojego MAX() agregat. Powód, dla którego otrzymałeś poprawną odpowiedź 12 Twoja pierwsza próba zapytania była po prostu dlatego, że jest to największy identyfikator w tabeli, a jednocześnie przypadkowo należący do emp_id = 1 . Otrzymałbyś ten sam wynik dla każdego z emp_id wartości. GROUP BY klauzula rozwiąże ten problem.

Oto przykład pobierania całego wiersza dla powiązanego rekordu:

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

Można to również zrobić za pomocą HAVING klauzula, nie wymagająca podzapytania:

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

Dla porównania, odniesienie do funkcji agregujących MySQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz z wieloma tagami

  2. Użyj pełnego kalendarza bez daty

  3. Zabij zapytanie MySQL przy przerwaniu użytkownika

  4. Używanie indeksu, używanie tymczasowe, używanie sortowania plików - jak to naprawić?

  5. JQuery Datatable — Podział pojedynczej komórki na wiele kolumn w celu zapewnienia czytelności?