簡體   English   中英

MySQL FULL JOIN 不工作,但 RIGHT 和 LEFT 連接工作

[英]MySQL FULL JOIN not working but RIGHT and LEFT join works

這讓我發瘋。 我有兩個表,我試圖在其上執行連接,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

我到底做錯了什么? 提前致謝!

看看這個如何在 MySQL 中模擬 FULL OUTER JOIN 它可能會有所幫助。

在 mysql 中不支持FULL OUTER JOIN

您可以使用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
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;

工作得很好。

我不知道問題是什么,但我遇到了同樣的問題,所以你可以試試這個:

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM