11

これは私を夢中にさせています。結合を実行しようとしている 2 つのテーブル、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'

このクエリは、FULL JOIN を LEFT JOIN、RIGHT JOIN、または INNER 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

FULL OUTER JOINは mysql ではサポートされません。

UNIONを使用してFULL OUTER JOINをエミュレートできます (MySQL 4.0.0 以降):

2 つのテーブルを持つ 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 に答える