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

Uzyskanie błędnych wartości dla innych kolumn po wybraniu MAX(updated_date)

Potrzebujesz klauzuli GROUP BY lub bardziej złożonego zapytania.

SELECT field1, MAX(updated_date)
  FROM mytable
 GROUP BY field1

Dla przykładowych danych zwróci to 3 wiersze.

Bardziej prawdopodobne, że chcesz:

SELECT t1.field1, t3.max_date
  FROM mytable AS t1
  JOIN (SELECT MAX(t2.updated_date) AS max_date
          FROM mytable AS t2
       ) AS t3
    ON t1.updated_date = t3.max_date;

Dla przykładowych danych zwróci 1 wiersz:

ta3   2012-03-11 11:05:56

Spośród głównych DBMS tylko MySQL pozwala na pominięcie klauzuli GROUP BY, gdy na liście wyboru występuje mieszanka kolumn zagregowanych i nieagregujących. Standard SQL wymaga klauzuli GROUP BY i należy wymienić w niej wszystkie kolumny nie zagregowane. Czasami w MySQL pominięcie klauzuli GROUP BY daje żądaną odpowiedź; jednak najczęściej daje nieoczekiwaną odpowiedź.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy w MySQL można używać zapytania krzyżowego/przestawnego?

  2. Określanie, czy indeks tabeli MySQL istnieje przed utworzeniem

  3. dlaczego otrzymuję błąd składni dla przygotowanego zestawienia?

  4. Pomijaj komunikaty ostrzegawcze za pomocą mysql z poziomu Terminala, ale hasło napisane w skrypcie bash

  5. mysqli_stmt::bind_param() [mysqli-stmt.bind-param]:Liczba zmiennych nie odpowiada liczbie parametrów