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

Penyortiran SQL tidak mengikuti grup demi pernyataan, selalu menggunakan kunci utama

Penjelasan tentang apa yang sedang terjadi :

Anda melakukan GROUP BY di staff.department , namun SELECT . Anda list berisi 2 kolom non-pengelompokan staff.workerID, staff.name . Dalam sql standar ini adalah kesalahan sintaks, namun MySql mengizinkannya sehingga penulis kueri harus memastikan bahwa mereka menangani sendiri situasi seperti itu.

Referensi:http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html

Dimulai dengan MySQL 5.1, fitur non-standar dapat dinonaktifkan dengan menyetel flag ONLY_FULL_GROUP_BY di sql_mode:http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by

Cara memperbaiki :

select staff.workerID, staff.name, staff.department, staff.salary
from staff
join (
  select staff.department, max(staff.salary) AS biggest
  from staff
  group by staff.department
) t
on t.department = staff.department and t.biggest = staff.salary

Dalam kueri dalam, ambil departemen dan gaji tertingginya menggunakan GROUP BY. Kemudian di kueri luar, gabungkan hasil tersebut dengan tabel utama yang akan memberi Anda hasil yang diinginkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COLLATE apa yang harus saya atur untuk menggunakan semua jenis bahasa yang mungkin?

  2. Kolom tidak dikenal dalam kesalahan 'daftar bidang' pada permintaan Pembaruan MySQL

  3. 2 Kotak masukan pelengkapan otomatis/saran menggunakan jQuery atau Ajax dengan kotak kedua berdasarkan pilihan pertama dengan banyak item

  4. Tambahkan Tombol Hapus ke tabel hasil PHP

  5. Apakah proxy RDS memengaruhi penyatuan sisi aplikasi saat ini?