Anda perlu menggunakan FUNGSI AGREGAT :
Fungsi agregat menghitung satu hasil dari sekumpulan nilai input.
SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;
Penanganan MySQL dari GROUP BY :
Dalam SQL standar, kueri yang menyertakan klausa GROUP BY tidak dapat merujuk ke kolom yang tidak teragregasi dalam daftar pilih yang tidak disebutkan dalam klausa GROUP BY
dan:
MySQL memperluas penggunaan GROUP BY sehingga daftar pilih dapat merujuk ke kolom non-agregat yang tidak disebutkan dalam klausa GROUP BY. Ini berarti bahwa kueri sebelumnya legal di MySQL. Anda dapat menggunakan fitur ini untuk mendapatkan kinerja yang lebih baik dengan menghindari penyortiran dan pengelompokan kolom yang tidak perlu. Namun, ini berguna terutama ketika semua nilai di setiap kolom non-agregat yang tidak disebutkan dalam GROUP BY adalah sama untuk setiap grup. Server bebas memilih nilai apa pun dari setiap grup, jadi kecuali nilainya sama, nilai yang dipilih tidak dapat ditentukan
Jadi dengan versi MySQL tanpa fungsi agregat eksplisit, Anda mungkin berakhir dengan nilai yang tidak pasti. Saya sangat menyarankan untuk menggunakan fungsi agregat tertentu.
EDIT:
Dari Penanganan MySQL dari GROUP BY :
SQL92 dan sebelumnya tidak mengizinkan kueri yang daftar pilih, kondisi HAVING, atau daftar ORDER BY merujuk ke kolom nonagregated yang tidak disebutkan dalam klausa GROUP BY.
SQL99 dan yang lebih baru mengizinkan nonagregat seperti itu per fitur opsional T301 jika mereka secara fungsional bergantung pada kolom GROUP BY: Jika ada hubungan seperti itu antara nama dan custid, kueri itu legal. Ini akan menjadi kasus, misalnya, adalah custid kunci utama pelanggan.
Contoh:
SELECT o.custid, c.name, MAX(o.payment)
FROM orders AS o
JOIN customers AS c
ON o.custid = c.custid
GROUP BY o.custid;