MySql外部连接错误1064

时间:2018-07-20 15:33:52

标签: mysql

在尝试外部连接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或external,它将不再起作用。这不起作用:

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个警告

     

查询:选择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   oi ...

     

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

预先感谢

1 个答案:

答案 0 :(得分:1)

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

JOIN在不同的SQL方言中非常不同。有些人称联接稍有不同,有些人没有特定的联接,有些人则使用不同的语法来支持它们(例如没有CROSS JOIN,但是您仍然可以使用CROSS JOIN来进行JOIN ON条件)。请务必阅读您所使用的SQL方言的文档。

某些人使用outer join来表示full outer join,而其他人使用outer join作为具有三个leftright和{{1 }} full加入。但是MySQL没有outer