Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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 从单个“一体式员工”表中返回大于经理工资的员工工资_Mysql_Sql_Database - Fatal编程技术网

Mysql 从单个“一体式员工”表中返回大于经理工资的员工工资

Mysql 从单个“一体式员工”表中返回大于经理工资的员工工资,mysql,sql,database,Mysql,Sql,Database,我是sql旅程的新手,遇到了一个问题,我想返回工资高于经理的员工,只有一个表, 存在具有唯一id的员工 我无法访问您的图像链接,但这里有一个简单的示例: 选择emp.name 来自员工emp 在emp.managerid=mgr.id和emp.salary>mgr.salary上内部加入员工经理 我会这样做: select e.* from employees e where e.salary > (select m.salary from employ

我是sql旅程的新手,遇到了一个问题,我想返回工资高于经理的员工,只有一个表, 存在具有唯一id的员工


我无法访问您的图像链接,但这里有一个简单的示例:

选择emp.name
来自员工emp
在emp.managerid=mgr.id和emp.salary>mgr.salary上内部加入员工经理
我会这样做:

select e.*
from employees e
where e.salary > (select m.salary
                  from employees m
                  where m.id = e.employee_id
                 );

. . 在这种情况下,
左连接绝对是免费的。为什么?你能解释一下吗。嗯,如果没有匹配的管理器,就没有太多的比较了。一般来说,加入一个没有选择数据的表是没有意义的。在您的例子中,情况是混乱的,因为尽管您编写了“LEFT JOIN”,但您的查询实际上执行了一个内部连接。这是因为WHERE子句在左侧联接表上包含一个比较运算符。为了证明它执行了左连接,您可以执行EXPLAIN EXTENDED[your quey],后跟SHOW WARNINGS;是的,你们是对的。我将其更改为
内部
连接。谢谢你的提示。这是一种更简单的查询我想要的数据的方法,我想知道使用联接是否比这种方法有任何优势,反之亦然?@RaviKhatri。从性能的角度来看,两者应该是可比较的,因此这是一个选择的问题。