MySQL中有两个左连接和一个联合

时间:2010-09-07 03:50:06

标签: sql mysql mysql-error-1066

我正在尝试在 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'

我哪里出错,我该如何真正执行此查询?

2 个答案:

答案 0 :(得分:6)

别名你的表,如:

LEFT JOIN users u1 ON u1.uid = friends.fid1
LEFT JOIN users u2 ON u2.uid = friends.fid2

答案 1 :(得分:2)

你已经用不同的表字段写了两次左连接,似乎在解析它时给它们别名然后用friends表加入它们表

LEFT JOIN users users1 ON users1.uid = friends.fid1
LEFT JOIN users users2 ON users2.uid = friends.fid2