Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

min(kolom) tidak mengembalikan saya data yang benar dari kolom lain

Anda ambil

  1. id,
  2. tanggal terendah untuk id itu, dan
  3. apa saja dari nama-nama yang menyertainya.

Basis data (normal) lainnya bahkan tidak mengizinkan kueri ini. Mereka akan memaksa Anda untuk menggunakan fungsi agregat untuk nama , atau tambahkan nama ke group by demikian juga. MySQL malah memilih nilai acak, dan itulah masalah Anda.

Untuk mengatasi ini, kueri Anda akan menjadi sedikit lebih rumit:

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)

Atau:

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. Bagaimana saya bisa membatasi pengguna MySQL ke tabel tertentu?

  2. Salin database mysql dari server jauh ke komputer lokal

  3. Deklarasikan variabel dalam database MySQL 'hanya baca'

  4. Django MySQL kueri berbeda untuk mendapatkan banyak nilai

  5. Menggunakan backtick di sekitar nama bidang