Förklaring till vad som händer :
Du utför en GROUP BY
på staff.department
, men din SELECT
listan innehåller 2 icke-grupperande kolumner staff.workerID, staff.name
. I standard sql är detta ett syntaxfel, men MySql tillåter det så att frågeskrivarna måste se till att de hanterar sådana situationer själva.
Referens:http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html
Från och med MySQL 5.1 kan den icke-standardiserade funktionen inaktiveras genom att ställa in flaggan ONLY_FULL_GROUP_BY i sql_mode:http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by
Så här åtgärdar du :
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
I den inre frågan, hämta avdelningen och dess högsta lön med hjälp av GROUP BY. I den yttre frågan slå samman dessa resultat med huvudtabellen som skulle ge dig de önskade resultaten.