【问题标题】:MySql Outer Join Error 1064MySql 外连接错误 1064
【发布时间】:2018-12-28 23:14:00
【问题描述】:

我在尝试外连接 4 个 2 x 2 表以匹配两者之间缺少的链接时出错,我还想显示那些不匹配的行。

这个查询工作正常:

select
  r.name    AS r,
  a.name    AS a,
  f.name    AS f
from Field f
     join Order o 
    on f.f2o = o.oid
     join Resource r 
    on r.name = o.name
     join Attribute a 
    on a.a2r= r.oid and f.name = a.name;

但如果我使用 left 或 outer,它就不再起作用了。这不起作用:

select
  r.name    AS r,
  a.name    AS a,
  f.name    AS f
from Field f
     join Order o 
    on f.f2o = o.oid
     join Resource r 
    on r.name = o.name
     outer join Attribute a             -- <--- here is the issue
    on a.a2r= r.oid and f.name = a.name;

返回

已执行 1 个查询,0 个成功,1 个错误,0 个警告

查询:select r.name AS r, a.name AS a, f.name AS f, oi.action AS 来自 t_m_prod_action_oitem_fld 的动作 f 加入 t_m_prod_action_oitem 哎……

错误代码:1064 您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在 a.attr2rfs = r.oid 和 'outer join t_m_attr a 附近使用的语法 f.name = a.name LIMIT 0, 1000' 在第 11 行

提前致谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    没有这样的事情。使用LEFT JOINRIGHT JOIN 或使用LEFT JOIN 的并集模拟FULL OUTER JOIN RIGHT JOIN

    JOIN 在不同的 SQL 方言中非常不同。有些调用连接略有不同,有些没有特定的连接,有些使用不同的语法支持它们(例如没有CROSS JOIN,但您仍然可以使用JOIN 而不使用ON 条件来执行CROSS JOIN) .始终阅读您正在使用的 SQL 方言的文档。

    有些人使用outer join 来表示full outer join,而其他人使用outer join 作为具有三个leftrightfullouter 的类别。但是 MySQL 没有full outer join

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2015-07-03
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多