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

Tolong jelaskan fungsi dari select max(...) ... group by di sql

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbandingan tanggal/penulis MySQL

  2. Hitung dan tampilkan berapa banyak hasil kolom tertentu

  3. MYSQL auto_increment_increment

  4. Konversi database MySQL dari latin ke UTF-8

  5. MYSQL:JIKA memiliki kondisi OR ®EXP cocok