mysql - 如何子查询正确的结果

标签 mysql sql wamp innodb

我正在尝试执行一个联接子查询来仅返回收入低于 46000 的员工姓名,并且我可以通过返回员工 ID(但不能没有它)来使其正常工作。

我就是这样做的。

Select e.eid, e.ename
From employee_table e
Inner Join (
Select salary, eid 
from salary
Where salary > 46000
) as s
On e.eid = s.eid;

最佳答案

这是因为您使用的是动态临时表,如果您不选择 eid 列,您的临时 dinamica 表不包含此值,并且 join 中的 on 子句失败

  Select e.eid, e.ename
  From employee_table e
  Inner Join (
      Select salary, eid 
      from salary
      Where salary < 46000
  ) as s
  On e.eid = s.eid;

您可以在没有动态临时表的情况下使用内部联接

  Select e.eid, e.ename
  From employee_table e
  INNER JOIN salary s On e.eid = s.eid
  where s.salary < 46000

关于mysql - 如何子查询正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39935965/

相关文章:

mysql连接两列如果

php - 如何在 SQL、Codeigniter 中的一个查询中设置不同的限制不同列?

具有动态内容的 PHP 表

sql - 如何在 Rails 的最后一个给定字段中排序并返回具有给定值的记录?

php - 为什么 php 每次在测试环境 (WAMP) 中生成相同的 session ID?

zend-framework - zend Framework quickstart表必须具有主键,但未找到任何主键

java - Quarkus MySQL JDBC 依赖项

sql - 如何优化使用 GROUP BY 并连接多对多关系表的 SQL 查询?

sql - 如何在 PostgreSQL 中按与现在()( future 优先)的距离排序

php - 无法访问本地网络上的 wamp server 2.5 服务