我無法找出執行此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