在尝试外部连接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
预先感谢
答案 0 :(得分:1)
没有这样的事情。使用LEFT JOIN
,RIGHT JOIN
或通过FULL OUTER JOIN
和 LEFT JOIN
的并集模拟RIGHT JOIN
。
JOIN在不同的SQL方言中非常不同。有些人称联接稍有不同,有些人没有特定的联接,有些人则使用不同的语法来支持它们(例如没有CROSS JOIN
,但是您仍然可以使用CROSS JOIN
来进行JOIN
ON
条件)。请务必阅读您所使用的SQL方言的文档。
某些人使用outer join
来表示full outer join
,而其他人使用outer join
作为具有三个left
,right
和{{1 }} full
加入。但是MySQL没有outer
。