Explication de ce qui se passe :
Vous effectuez un GROUP BY
sur staff.department
, cependant votre SELECT
la liste contient 2 colonnes non groupées staff.workerID, staff.name
. Dans SQL standard, il s'agit d'une erreur de syntaxe, mais MySql l'autorise donc les rédacteurs de requêtes doivent s'assurer qu'ils gèrent eux-mêmes de telles situations.
Référence :http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html
À partir de MySQL 5.1, la fonctionnalité non standard peut être désactivée en définissant l'indicateur ONLY_FULL_GROUP_BY dans sql_mode :http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by
Comment réparer :
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
Dans la requête interne, récupérez le service et son salaire le plus élevé à l'aide de GROUP BY. Ensuite, dans la requête externe, joignez ces résultats à la table principale qui vous donnerait les résultats souhaités.