我无法找出执行此MySQL语句的最佳方法。带联合的MySQL查询返回错误结果
第一个表 '朋友' 的用户ID,friendID和状态
第二个表 '用户' 具有名字,姓氏,用户ID
第三个表 'users_temp' 有tempUserID,tempUserName
我期待有一个查询全部来自“朋友”,其中userID或friendID = 1,并加入其他字段(如果userID = 1,则抓住friendID或者如果friendID = 1,则抓取用户ID)到'users'/'users_temp '那个userID = users.userID,如果存在,则留下加入users_temp。
现在我有这个,但它不断返回错误的结果。此外,它返回的用户ID必须是唯一的,所以我刚回到1%的用户(因为这是一个朋友列表)
SELECT users.userid,
users.fbid AS fbID,
users.firstname AS firstName,
users.lastname AS lastName,
users.phonenumber AS phoneNumber,
users.avatar AS avatar,
users_temp.tempusername AS tempUserName,
status,
friendid
FROM users
JOIN (SELECT friendid,
userid,
status
FROM friends
WHERE friendid = $userid
AND ((status != 2)
AND (status != 3))
UNION ALL
SELECT friendid,
userid,
status
FROM friends
WHERE userid = $userid
AND ((status != 2)
AND (status != 3))) foo
ON users.userid = foo.userid
LEFT JOIN users_temp
ON users.userid = users_temp.tempuserid
我创建了一个sqlfiddle我希望将进一步解释我的SQL安装
http://sqlfiddle.com/#!2/690c3/4
任何帮助将不胜感激!
感谢,
韦斯
嗯..试试'UNION'而不是'UNION ALL'? – Kermit 2013-03-04 00:35:27
没有运气,以及。 – Wes 2013-03-04 00:40:17