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.