11

这让我发疯了。我有两个表,我正在尝试执行连接,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

我到底做错了什么?提前致谢!

4

5 回答 5

18

MySQL 不支持 FULL JOIN

http://en.wikipedia.org/wiki/Join_%28SQL%29#Full_outer_join

于 2010-12-25T20:09:38.100 回答
6

看看这个如何在 MySQL 中模拟 FULL OUTER JOIN。它可能会有所帮助。

于 2010-12-25T20:05:08.187 回答
3

mysql 不支持FULL OUTER JOIN 。

您可以使用UNION模拟FULL OUTER JOIN(从 MySQL 4.0.0 开始):

有两个表 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
于 2012-01-21T05:44:32.637 回答
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;

工作得很好。

于 2013-07-04T20:40:55.957 回答
0

我不知道问题是什么,但我遇到了同样的问题,所以在这里你可以试试这个:

SELECT * 
FROM usersXstats 
Left JOIN usersXstats_alltime 
ON usersXstats.userId=usersXstats_alltime.userId
Union
SELECT * 
FROM usersXstats 
RightJOIN usersXstats_alltime 
ON usersXstats.userId=usersXstats_alltime.userId 
于 2021-03-19T10:15:23.540 回答