Anda bisa gunakan GROUP BY
, tetapi penting untuk memahami cara kerjanya.
Saat Anda menggunakan GROUP BY
sekelompok baris diciutkan menjadi satu dan apa yang ditampilkan di kolom lain yang tidak digunakan di GROUP BY
Anda klausa, ditentukan baik dengan menggunakan fungsi agregat atau baris acak dari grup itu. Anda tidak dapat memastikan untuk mendapatkan baris yang sesuai dengan baris yang ditampilkan dengan memegang MAX()
value atau fungsi agregat apa pun yang Anda gunakan. Ini menjadi sangat jelas, ketika Anda melakukan kueri seperti:
SELECT id, MIN(whatever), MAX(whatever), another_column
FROM your_table
GROUP BY id
"another_column" dapat menjadi milik baris yang memegang nilai MIN() atau nilai MAX() atau bahkan ke baris lain yang tidak ditampilkan sama sekali. Di RDBMS selain MySQL sebenarnya dilarang untuk memilih kolom yang tidak menggunakan fungsi agregat atau tidak tercantum dalam GROUP BY
klausa, hanya untuk mencegah pengguna membuat kesalahan atau berpikir bahwa mereka mendapatkan hasil yang benar.
Jadi, dalam kasus Anda, Anda sepertinya ingin menampilkan kolom "nilai" juga. Untuk alasan di atas, jawaban juergen_d salah, karena tidak memilih "nilai", dan jika ya, Anda tidak dapat memastikan itu "nilai" yang benar. Jawaban Filipe Silva salah, karena mengelompokkan berdasarkan "nilai". Melakukan ini dalam kasus Anda akan benar-benar mengembalikan seluruh tabel. Jawaban Romesh salah, karena menggunakan dua kali MAX()
function akan memberi Anda nilai maksimal, jelas tetapi bukan nilai yang sesuai dengan nilai datetime.
Jadi, bagaimana Anda harus melakukannya? Di sini dijelaskan 3 cara . Pelajari mereka dengan menerapkannya sendiri. Gak susah kok :)