Обяснение за случващото се :
Изпълнявате GROUP BY
на staff.department
, но вашият SELECT
списъкът съдържа 2 негрупиращи колони staff.workerID, staff.name
. В стандартния sql това е синтактична грешка, но MySql го позволява, така че авторите на заявки трябва да се уверят, че сами се справят с такива ситуации.
Справка:http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html
Започвайки с MySQL 5.1, нестандартната функция може да бъде деактивирана чрез задаване на флага ONLY_FULL_GROUP_BY в sql_mode:http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by
Как да коригирам :
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
Във вътрешната заявка извличане на отдел и най-високата му заплата с помощта на GROUP BY. След това във външната заявка съединете тези резултати с основната таблица, която ще ви даде желаните резултати.