sql >> Base de Datos >  >> RDS >> Mysql

Obteniendo valores incorrectos para otras columnas cuando selecciono MAX (actualizado_fecha)

O necesita una cláusula GROUP BY o una consulta más compleja.

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

Para los datos de muestra, esto devolverá 3 filas.

Lo más probable es que desee:

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;

Para los datos de muestra, esto devolverá 1 fila:

ta3   2012-03-11 11:05:56

De los DBMS principales, solo MySQL le permite omitir la cláusula GROUP BY cuando tiene una combinación de columnas agregadas y no agregadas en la lista de selección. El estándar SQL requiere la cláusula GROUP BY y debe enumerar todas las columnas no agregadas en él. A veces, en MySQL, omitir la cláusula GROUP BY produce la respuesta que desea; sin embargo, la mayoría de las veces se las arregla para dar una respuesta inesperada.