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

Apa keuntungan dari mode only_full_group_by?

only_full_group_by =aktif memberi tahu mesin MySQL:Jangan terapkan GROUP BY ketika Anda ragu tentang hasil apa yang akan ditampilkan dan membuat kesalahan. Hanya terapkan jika Group By secara khusus memberitahu Anda apa yang harus dilakukan. yaitu ketika Group By penuh dan sempurna!

only_full_group_by =nonaktif memberi tahu mesin MySQL:selalu terapkan GROUP BY dan jika Anda ragu tentang hasil apa yang harus dipilih, pilih salah satu secara acak!

Anda tidak perlu mematikannya jika menggunakan GROUP BY dengan benar!

Contoh:

Tabel:pengguna

 id   |  name
----------------
  1      ali
  2      john
  3      ali

Saat Anda menggunakan GROUP BY pada name kolom:

SELECT * FROM users GROUP BY name;

Ada dua kemungkinan hasil:

  1      ali
  2      john     

ATAU

  2      john     
  3      ali

MYSQL tidak tahu hasil apa yang harus dipilih! Karena ada id yang berbeda s tetapi keduanya memiliki name=ali .

Solusi1:

hanya memilih name bidang:

SELECT name FROM users GROUP BY name;

hasil:

  ali
  john     

Ini adalah solusi sempurna. menghapus kolom yang membuat GROUP BY bingung. Ini berarti Anda tahu apa yang Anda lakukan. Biasanya, Anda tidak memerlukan
kolom tersebut, tetapi jika Anda membutuhkannya, buka Solution3 !

Solusi2:

Menonaktifkan only_full_group_by . MYSQL akan memilih salah satu dari dua kemungkinan hasil RANDOM !! (Tidak apa-apa jika Anda tidak terlalu peduli apa id itu akan memilih, tetapi ingat untuk mengaktifkannya segera setelah kueri Anda untuk mencegah perilaku tak terduga di groupBys mendatang)

Solusi3

Gunakan Aggregate berfungsi seperti MIN() , MAX() untuk membantu MYSQL memutuskan apa yang harus dipilih.

Misalnya:

SELECT MAX(id), name FROM users GROUP BY name;

hasil:

  2      john     
  3      ali

Ini akan memilih ali baris yang memiliki maksimum id .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menghapus memori saat menjalankan skrip PHP yang panjang? mencoba tidak disetel()

  2. Bagaimana membuat mysql menerima koneksi secara eksternal

  3. apakah ada opsi pembaruan otomatis untuk DateTimeField di peewee seperti TimeStamp di MySQL?

  4. Cara memulai, memulai ulang, memeriksa status, dan menghentikan server MySQL

  5. Cara mengetahui ukuran Indeks di MySQL