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

MySQL 5.7 &only_full_group_by

  1. Ya. Kolom non-agregat adalah kolom apa pun yang tidak menggunakan fungsi agregasi seperti MAX , COUNT , SUM , GROUP_CONCAT , dll.

  2. Kolom a secara fungsional bergantung pada kolom b jika nilai b menyiratkan nilai tertentu a . Ini biasanya berarti bahwa b adalah kunci unik untuk tabel, dan a adalah beberapa kolom lain dalam tabel itu.

  3. Secara unik ditentukan oleh sama dengan ketergantungan fungsional.

  4. Alternatifnya adalah membuat daftar semua kolom yang tidak diagregasi di GROUP BY daftar:GROUP BY a.Z, a.Y, a.X .

Alasan untuk semua ini adalah ketika Anda memilih kolom yang tidak ada dalam GROUP BY list, mereka akan berasal dari baris arbitrer di baris yang dikelompokkan. Hal ini menyebabkan banyak kesalahan umum. Misalnya, kesalahan umum adalah menulis:

SELECT user_id, MAX(timestamp), ip_address
FROM user_logins
GROUP BY user_id

dan mengharapkan ip_address berisi alamat login terbaru untuk setiap pengguna. Tapi itu benar-benar akan berisi apa saja dari alamat yang mereka masuki, bukan dari baris dengan MAX(timestamp) . Lihat SQL Pilih hanya baris dengan Nilai Maks pada Kolom cara yang benar untuk melakukannya.

Pengecualian ketergantungan fungsional biasanya berguna dengan gabungan.

SELECT u.user_id, u.user_name, MAX(l.timestamp)
FROM users AS u
JOIN user_logins AS l ON u.user_id = l.user_id
GROUP BY u.user_id

Sejak user_id adalah kunci utama users tabel, secara unik menentukan user_name , jadi tidak perlu mencantumkannya secara eksplisit di GROUP BY .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Pilih hanya baris di mana ada banyak hubungan

  2. Hubungan Satu-ke-Banyak di MySQL - bagaimana cara membangun model?

  3. cari data dari input html di mysql

  4. MySQL di Cloud - Migrasi Online dari Amazon RDS ke Server Anda sendiri:Part2

  5. KESALAHAN! Manajer MySQL atau file PID server tidak dapat ditemukan! QNAP