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

min (columna) no me devuelve los datos correctos de otras columnas

Agarras

  1. la identificación,
  2. la fecha más baja para esa identificación, y
  3. cualquiera de los nombres que lo acompañan.

Otras bases de datos (normales) ni siquiera permitirán esta consulta. Te obligarían a usar una función agregada para nombre o añade nombre al group by así como. MySQL, en cambio, elige un valor aleatorio, y ahí está tu problema.

Para resolver esto, su consulta se volverá un poco más compleja:

select
  t.id, 
  t.mydate,
  t.name
from
  myTable t
where
  t.mydate = 
    (select 
      min(td.mydate) 
    from 
      myTable td 
    where 
      td.id = t.id)

O:

select
  t.id, 
  t.mydate as date,
  t.name
from
  myTable t
  inner join 
    (select 
      td.id
      min(td.mydate) as date
    from 
      myTable td 
    group by 
      td.id) tx on tx.id = t.id and tx.date = t.mydate