sql >> Database >  >> RDS >> Mysql

min(kolom) geeft mij geen correcte gegevens van andere kolommen terug

Jij grijpt

  1. de id,
  2. de laagste datum voor die id, en
  3. elke van de namen die daarbij horen.

Andere (normale) databases laten deze zoekopdracht niet eens toe. Ze zouden je dwingen om ofwel een aggregatiefunctie te gebruiken voor name , of voeg naam toe naar de group by ook. MySQL kiest in plaats daarvan een willekeurige waarde, en daar is je probleem.

Om dit op te lossen, wordt uw vraag iets complexer:

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)

Of:

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


  1. PHP Database gedreven Multilevel Menu

  2. Laatste index van een string vinden in Oracle

  3. kolom toevoegen aan mysql-tabel als deze niet bestaat

  4. Problemen oplossen Microsoft SQL Server-fout 18456