Mysql
 sql >> база данни >  >> RDS >> Mysql

min(column) не ми връща правилни данни за други колони

Грабваш

  1. идентификаторът,
  2. най-ниската дата за този идентификатор и
  3. всякакво от имената, които вървят с него.

Други (нормални) бази данни дори няма да позволят тази заявка. Те биха ви принудили или да използвате агрегатна функция за name , или добавете име към group by както и Вместо това MySQL избира произволна стойност и това е вашият проблем.

За да разрешите това, вашата заявка ще стане малко по-сложна:

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)

Или:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DOUBLE срещу DECIMAL в MySQL

  2. Дизайн на база данни:Множество таблици срещу една таблица

  3. Как да наложа ограничение на външния ключ от несвързани таблици в Mysql?

  4. Mysql group_concat със суми също вътре

  5. php+mysql:вмъкнете php масив в mysql