Dalam hal menggunakan MAX()
GROUP BY
klausa dasarnya memberitahu mesin kueri bagaimana mengelompokkan item dari mana untuk menentukan maksimum. Dalam contoh pertama Anda, Anda hanya memilih satu kolom, jadi tidak perlu pengelompokan. Tetapi dalam contoh kedua Anda, Anda memiliki banyak kolom. Jadi, Anda perlu memberi tahu mesin kueri cara menentukan mana yang akan dibandingkan untuk menemukan maksimum.
Anda menyuruhnya untuk mengelompokkan dengan id
kolom. Yang berarti akan membandingkan record yang memiliki id
yang sama dan memberi Anda satu maksimum untuk setiap id
unik . Karena setiap record memiliki id
yang berbeda , Anda pada dasarnya tidak melakukan apa pun dengan klausa itu.
Itu mengelompokkan semua catatan dengan id
dari 1
(yang merupakan satu record), dan mengembalikan record dengan maksimum id
dari kelompok itu (yang merupakan catatan itu). Itu melakukan hal yang sama untuk 2
, 3
, dll.
Dalam kasus tiga kolom yang ditampilkan di sini, satu-satunya tempat yang masuk akal untuk mengelompokkan catatan Anda adalah di test_id
kolom. Sesuatu seperti ini:
SELECT MAX(id), title, test_id
FROM images
WHERE image IS NOT null
GROUP BY test_id
Ini akan mengelompokkannya berdasarkan test_id
, sehingga hasilnya akan menyertakan record 6 (maksimal id
untuk test_id
0), 4 (maksimum id
untuk test_id
1), dan 8 (maksimum id
untuk test_id
2). Dengan membagi record menjadi tiga grup berdasarkan tiga nilai unik di test_id
kolom, secara efektif dapat menemukan id
"maksimum" dalam setiap grup.