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

GROUP BY perilaku ketika tidak ada fungsi agregat hadir dalam klausa SELECT

Baca dokumentasi MySQL pada poin khusus ini.

Singkatnya, MySQL memungkinkan menghilangkan beberapa kolom dari GROUP BY, untuk tujuan kinerja, namun ini hanya berfungsi jika semua kolom yang dihilangkan memiliki nilai yang sama (dalam pengelompokan), jika tidak, nilai yang dikembalikan oleh kueri memang tidak dapat ditentukan , seperti yang diduga dengan benar oleh orang lain di pos ini. Yang pasti menambahkan klausa ORDER BY tidak akan memperkenalkan kembali segala bentuk perilaku deterministik.

Meskipun bukan inti masalah, contoh ini menunjukkan bagaimana menggunakan * daripada enumerasi eksplisit kolom yang diinginkan seringkali merupakan ide yang buruk.

Kutipan dari dokumentasi MySQL 5.0:

When using this feature, all rows in each group should have the same values
for the columns that are omitted from the GROUP BY part. The server is free
to return any value from the group, so the results are indeterminate unless
all values are the same. 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Haruskah koneksi database tetap terbuka sepanjang waktu atau hanya dibuka saat dibutuhkan?

  2. Host lokal mysql !=127.0.0.1?

  3. Mengumumkan ClusterControl 1.7.5:Pemeliharaan &Dukungan Cluster Tingkat Lanjut untuk PostgreSQL 12 dan MongoDB 4.2

  4. Lengkapi sistem pendaftaran pengguna menggunakan PHP dan database MySQL

  5. Cara Mendapatkan Ukuran Tabel di MySQL