sql >> Databáze >  >> RDS >> Mysql

min(sloupec) mi nevrací správná data jiných sloupců

Chytneš

  1. ID,
  2. nejnižší datum pro dané ID a
  3. jakýkoli jmen, která k tomu patří.

Jiné (normální) databáze tento dotaz ani neumožňují. Donutili by vás použít agregační funkci pro name nebo přidejte jméno do group by také. MySQL místo toho vybere náhodnou hodnotu a je tu váš problém.

Chcete-li to vyřešit, váš dotaz bude trochu složitější:

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)

Nebo:

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. BOOLEAN nebo TINYINT zmatek

  2. Jak porozumět geografickému datovému typu serveru SQL Server

  3. Dotaz na MSQL pro vítěze, počínaje x-tým místem pomocí SELECT

  4. Jak zjistit, zda při použití aktualizace duplicitního klíče byl vložen nebo aktualizován řádek?