MySQL создание запроса с JOIN + GROUP + внешний ключ - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть таблицы зарплат, как показано на графике c ниже. Номер сотрудника emp_no является внешним ключом. Следующий запрос работает нормально:

SELECT 
emp_no, ANY_VALUE(salary)
 FROM salaries 
 GROUP by salaries.emp_no 
 LIMIT 0, 500

Но если я попытаюсь заказать по окладу DES C, он выдаст следующую ошибку:

Код ошибки: 1055. Выражение # 1 предложения ORDER BY отсутствует в предложении GROUP BY и содержит неагрегированный столбец 'employee.salaries.salary', который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by

Есть ли способ построить этот запрос, чтобы он показывал мне самый высокий salary v каждый emp_no? Я пытаюсь создать правильный запрос, а не обходной путь для sql_mode = only_full_group_by

enter image description here

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Есть ли способ построить этот запрос, чтобы он показывал мне самую высокую зарплату v каждый emp_no?

Вы, похоже, ищете агрегатную функцию max(), а не any_value():

select emp_no, max(salary) as max_salary
from salaries 
group by emp_no 
order by max_salary desc
limit 0, 500

any_value(), как указывает его название, дает произвольное значение из доступных в группе (ie записей, имеющих одинаковые emp_no). С другой стороны, max() возвращает наибольшее доступное значение в каждой группе.

1 голос
/ 07 апреля 2020

Я бы предложил использовать псевдоним:

SELECT emp_no, ANY_VALUE(salary) as any_salary
FROM salaries 
GROUP by salaries.emp_no 
ORDER BY any_salary DESC
LIMIT 0, 500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...