【问题标题】:Why does this statement work when it is part of a subquery?当它是子查询的一部分时,为什么该语句有效?
【发布时间】:2013-02-16 14:52:29
【问题描述】:

我看到这条 SQL 语句有效:

SELECT * 
FROM Company 
LEFT JOIN (
   Departments 
   INNER JOIN Employees 
   ON Departments.dep_id = Employees.Dep_ID
   ) ON Company.compId = Departments.Comp_ID;  

但是这个说法:

 Departments INNER JOIN Employees ON Departments.dep_id = Employees.Dep_ID

无法解析。

这是否意味着只用于子查询的简短版本?

【问题讨论】:

  • 没有更多上下文很难理解您的问题。请编辑您的问题以显示不起作用的完整查询。顺便说一句,有效的查询没有子查询,它只是有一些多余的括号。
  • @DanBracuk:查询不成功的是第二条语句,就是第一条查询的LEFT JOIN后面括号里面的内容
  • @Cratylus 括号内的语句不是子查询,不能用作查询。它是连接表。
  • 括号内的表达式不是子查询。
  • @Perception:为什么不呢?它正在动态创建一个表,用作左连接的右侧部分

标签: mysql sql join subquery


【解决方案1】:

这个:

Departments INNER JOIN Employees ON Departments.dep_id = Employees.Dep_ID

无法解析,因为它不是一个完整的查询。它缺少开始子句,在这种情况下是一个选择子句。开头子句的其他选项是插入、更新或删除。

它也缺少关键字“from”。此外,虽然不是强制性的,但大多数选择查询都有一个 where 子句来获取他们想要的记录,而不是整个数据库。

【讨论】:

  • 因为在第一个查询中它是 from 子句的一部分。
【解决方案2】:

您可能缺少“SELECT FROM”?

【讨论】:

  • 第一次查询时为什么不需要它?
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
相关资源
最近更新 更多