我正在尝试在 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'
。
我哪里出错,我该如何真正执行此查询?
答案 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