Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL:列出收入高于经理的员工的姓名_Mysql_Sql_Database - Fatal编程技术网

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);