Uitleg voor wat er aan de hand is :
Je voert een GROUP BY
. uit op staff.department
, maar uw SELECT
lijst bevat 2 niet-groeperende kolommen staff.workerID, staff.name
. In standaard sql is dit een syntaxisfout, maar MySql staat het toe, zodat de queryschrijvers ervoor moeten zorgen dat ze dergelijke situaties zelf afhandelen.
Referentie:http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html
Vanaf MySQL 5.1 kan de niet-standaard functie worden uitgeschakeld door de vlag ONLY_FULL_GROUP_BY in sql_mode in te stellen:http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by
Oplossen :
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
Haal in de binnenste zoekopdracht de afdeling en het hoogste salaris op met GROUP BY. Voeg vervolgens in de buitenste query die resultaten samen met de hoofdtabel die u de gewenste resultaten zou geven.