4

でかなり複雑なクエリを実行しようとしています MySQL。少なくとも私にとっては複雑です。

これが私がやろうとしていることの例です:

SELECT * FROM friends
LEFT JOIN users ON users.uid = friends.fid1
LEFT JOIN users ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2  = 1) AND (friends.fid1 < 1)
ORDER BY RAND()
LIMIT 6;

戻ります: ERROR 1066 (42000): Not unique table/alias: 'users'.

どこが間違っているのでしょうか? このクエリを実際にどのように実行すればよいでしょうか?

4

2 に答える 2

6

次のように、テーブルにエイリアスを付けます。

LEFT JOIN users u1 ON u1.uid = friends.fid1
LEFT JOIN users u2 ON u2.uid = friends.fid2
于 2010-09-07T03:51:57.647 に答える
2

テーブルの異なるフィールドで左結合を2回記述しましたが、解析されたときにエイリアスを指定してfriendsテーブルで結合するようです

LEFT JOIN users users1 ON users1.uid = friends.fid1
LEFT JOIN users users2 ON users2.uid = friends.fid2
于 2010-09-07T03:57:39.507 に答える