MySQL FULL JOIN不工作但右和左连接工作

时间:2010-12-25 19:58:40

标签: mysql join full-outer-join

这让我疯了。我有两个表,我试图在其上执行连接,usersXstats和usersXstats_alltime。

两个表都具有相同的列:id,userId,statId和value

我想做的是

SELECT * 
FROM usersXstats 
FULL JOIN usersXstats_alltime 
ON usersXstats.userId=usersXstats_alltime.userId 
AND usersXstats.statId=usersXstats_alltime.statId

然而这是回归

Unknown column 'usersXstats.userId' in 'on clause'

使用LEFT JOIN,RIGHT JOIN或INNER JOIN替换FULL JOIN时,此查询的工作方式正常。

为了便于阅读,我写了以下查询:

SELECT * 
FROM usersXstats as uxs 
FULL JOIN usersXstats_alltime as uxsat 
ON uxs.userId=uxsat.userId 
AND uxs.statId=uxsat.statId

返回了另一个错误:

check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL JOIN usersXstats_alltime as uxsat ON uxs.userId=uxsat.userId AND uxs.statId' at line 1

我到底在做什么?提前谢谢!

5 个答案:

答案 0 :(得分:14)

答案 1 :(得分:6)

看看这个How to simulate FULL OUTER JOIN in MySQL。 这可能有所帮助。

答案 2 :(得分:2)

FULL OUTER JOIN 在mysql中不支持。

您可以使用 UNION (来自MySQL 4.0.0)模拟 FULL OUTER JOIN

有两个表usersXstats,usersXstats_alltime

SELECT * FROM usersXstats
LEFT JOIN usersXstats_alltime ON usersXstats.userId= usersXstats_alltime.userId
UNION
SELECT * FROM usersXstats
RIGHT JOIN usersXstats_alltime ON usersXstats.statId= usersXstats_alltime.statId

答案 3 :(得分:0)

SELECT Person1.Firstname, Person2.State
FROM Person1
left JOIN Person2
ON Person1.PersonID=Person2.PersonID
UNION
SELECT Person1.Firstname, Person2.State
FROM Person1
right JOIN Person2
ON Person1.PersonID=Person2.PersonID;

工作得非常好。

答案 4 :(得分:0)

我不知道问题出在哪里,但我遇到了同样的问题,所以您可以在这里尝试:

drawVertical(...)