我在尝试外部连接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个警告
查询:选择r.name为r,a.name为a,f.name为f,oi.action为action from t\u m\u prod\u action\u oitem\u fld f join t\u m\u prod\u action\u oitem oi。。。
错误代码:1064您的sql语法有错误;检查与您的mysql服务器版本对应的手册,以获得在第11行的“outer join t\u m\u attr a on a.attr2rfs=r.oid and f.name=a.name limit 0,1000”附近使用的正确语法
提前谢谢
1条答案
按热度按时间gopyfrb31#
没有这回事。要么使用
LEFT JOIN
,一个RIGHT JOIN
或者模仿FULL OUTER JOIN
使用LEFT JOIN
和RIGHT JOIN
.连接在不同的sql方言中是非常不同的。有些调用的连接稍有不同,有些没有特定的连接,有些使用不同的语法支持它们(例如没有
CROSS JOIN
但你还是可以CROSS JOIN
使用JOIN
没有一个ON
条件)。始终阅读您使用的sql方言的文档。有些人用
outer join
意思full outer join
其他人用的地方outer join
作为一个有三个left
,right
以及full
outer
连接。但是mysql没有full outer join
.