【问题标题】:Is the syntax for join on stricter than using comma where?join on 的语法是否比使用逗号 where 更严格?
【发布时间】:2013-07-05 01:09:12
【问题描述】:

以下查询解析失败:

select t.ename, t.received, d.loc from  
(  
  select e.ename, eb.received , e.deptno  
  from emp e left outer join  emp_bonus eb  
  on  
  e.empno=eb.empno  
)  
as t  
join dept as d on d.deptno = t.deptno;  

出现错误:

字段列表中的列'deptno'不明确

但是这个查询解析成功了:

select t.ename, t.received, d.loc from  
(  
  select e.ename, eb.received , e.deptno  
  from emp e left outer join  emp_bonus eb  
  on  
  e.empno=eb.empno  
)  
as t, dept as d where d.deptno = t.deptno   

我只是把JOIN ON改成了t, dept where
为什么第一个版本失败?

【问题讨论】:

    标签: mysql sql join where


    【解决方案1】:

    第一个查询在 mysql 5.1 版本中完美运行 see the demo

    【讨论】:

    • 嗯。我正在从查询浏览器运行5.0.20
    • 5.0.20 真的吗?更新到最新的 5.5 或 5.6,即使你不能这样做 - 无论出于何种原因 - 更新到 5.0 的最新次要版本:5.0.96 这可能是一个错误。
    猜你喜欢
    • 2020-04-09
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2012-12-08
    • 1970-01-01
    • 2010-10-09
    • 2012-05-05
    相关资源
    最近更新 更多