MySQL使用JOIN+构造查询;组+;外键
我有一个工资表,如下图所示。员工编号MySQL使用JOIN+构造查询;组+;外键,mysql,sql,database,Mysql,Sql,Database,我有一个工资表,如下图所示。员工编号emp\u no是外键。以下查询工作正常: SELECT emp_no, ANY_VALUE(salary) FROM salaries GROUP by salaries.emp_no LIMIT 0, 500 但如果我尝试按薪资描述订购,则会抛出以下错误: 错误代码:1055。ORDER BY子句的表达式#1不在GROUP BY中 子句,并包含未聚合的列“雇员.薪金.薪金” 功能上不依赖于GROUP BY子句中的列; 这与sql\u mode
emp\u no
是外键。以下查询工作正常:
SELECT
emp_no, ANY_VALUE(salary)
FROM salaries
GROUP by salaries.emp_no
LIMIT 0, 500
但如果我尝试按薪资描述订购,则会抛出以下错误:
错误代码:1055。ORDER BY子句的表达式#1不在GROUP BY中
子句,并包含未聚合的列“雇员.薪金.薪金”
功能上不依赖于GROUP BY子句中的列;
这与sql\u mode=only\u full\u group\u by不兼容
是否有一种方法可以构造此查询,以便它向我显示最高的薪资
v每个emp\u no
?我正在尝试构造一个适当的查询,而不是针对sql\u mode=only\u full\u group\u by
我建议使用别名:
SELECT emp_no, ANY_VALUE(salary) as any_salary
FROM salaries
GROUP by salaries.emp_no
ORDER BY any_salary DESC
LIMIT 0, 500
我建议使用别名:
SELECT emp_no, ANY_VALUE(salary) as any_salary
FROM salaries
GROUP by salaries.emp_no
ORDER BY any_salary DESC
LIMIT 0, 500
有没有办法构造这个查询,让它显示每个emp_no的最高工资
您似乎在寻找聚合函数max()
,而不是任何值()
:
any_value()
,顾名思义,为您提供组中可用的仲裁值(即具有相同emp_no
的记录)。另一方面,max()
有没有办法构造这个查询,让它显示每个emp_no的最高工资
您似乎在寻找聚合函数max()
,而不是任何值()
:
any_value()
,顾名思义,为您提供组中可用的仲裁值(即具有相同emp_no
的记录)。另一方面,max()