Mysql SQL:列出收入高于经理的员工的姓名
嗨,伙计们,我有这种类型的表,我需要显示的员工谁赚的比那里的经理多?如果我们有两个表,这会更容易,但我无法想象一个表中有一个代码。有什么想法吗?Mysql SQL:列出收入高于经理的员工的姓名,mysql,sql,database,Mysql,Sql,Database,嗨,伙计们,我有这种类型的表,我需要显示的员工谁赚的比那里的经理多?如果我们有两个表,这会更容易,但我无法想象一个表中有一个代码。有什么想法吗? 您可以在两个表之间进行“自联接”。在第二个表中,EMPNO将等于相应的MGR值 使用Where筛选出员工工资高于经理工资的情况 尝试: 正如@草莓一样,可以在连接条件本身中进行列比较(而不是使用Where)。您还可以执行以下操作: SELECT employee.* FROM your_table_name AS employee JOIN you
- 您可以在两个表之间进行“自联接”。在第二个表中,
将等于相应的EMPNO
值MGR
- 使用
筛选出员工工资高于经理工资的情况Where
正如@草莓一样,可以在连接条件本身中进行列比较(而不是使用
Where
)。您还可以执行以下操作:
SELECT employee.*
FROM your_table_name AS employee
JOIN your_table_name AS manager ON manager.EMPNO = employee.MGR
WHERE employee.SAL > manager.SAL
这种方法的优点是我们必须从内部连接切换到左连接,对查询所需的更改将更少。您应该使用自连接
SELECT employee.*
FROM your_table_name AS employee
JOIN your_table_name AS manager ON manager.EMPNO = employee.MGR AND
employee.SAL > manager.SAL
根据您的样本数据,不会有任何员工的工资高于经理。请确保您拥有最少的样本数据,包括您想要实现的案例以及相应的预期输出。提示:self-join。非常感谢您的回复。我试着实施了两天!我还有一个问题,我想是关于理解sql逻辑的。我需要给出公司的层次结构,你能提供一些建议吗?@AzatAleksanyan这是一个非常复杂的问题,涉及重复的层次查询。检查:@AzatAleksanyan我建议您在应用程序代码(例如:PHP)中构建层次结构,而不是进行列比较,我更喜欢和WHERE@madhurbhaiya我认为,当从内部连接切换到左连接时,更改较少。虽然这段代码可能为这个问题提供了一个解决方案,但最好添加上下文来说明为什么/如何工作。这可以帮助未来的用户学习,并将这些知识应用到他们自己的代码中。在解释代码时,用户可能会以投票的形式向您提供正面反馈。
SELECT employee.*
FROM your_table_name AS employee
JOIN your_table_name AS manager ON manager.EMPNO = employee.MGR AND
employee.SAL > manager.SAL
SELECT e1.EMPNO, e1.ENAME
FROM employee e1
JOIN employee mgr ON mgr.EMPNO = e1.MGR
WHERE e1.SAL > mgr.SAL
select name as Employee
from Employee as t
where salary > (select salary from Employee where id=t.ManagerId);