我想從左邊的連接,它的運行順序錯誤,但它的順序錯誤,從userdata表中得到結果。左加入ORDER BY和CASE
SELECT
u.id,
u.name,
f.tstamp
FROM userdata AS u
LEFT JOIN messages AS f ON (u.id=f.user_id) OR (u.id=f.friend_id)
WHERE u.id IN
(
SELECT CASE
WHEN user_id='".$uid."'
THEN friend_id
ELSE user_id
END FROM `friends`
WHERE
(
user_id='".$uid."' or friend_id = '".$uid."'
)
and type=2
)
GROUP BY u.id
ORDER BY f.tstamp ASC, u.onl DESC, u.name
的userdata>所有用戶
朋友>好友(1個每2個用戶行)
消息>行高達400
如此,剪斷運行,但它的使用最古老TSTAMP (時間戳),而不是最新的。
嘗試'f.tstamp DESC'而不是'ASC'。 – 2015-02-10 20:37:06
一般來說,sql的問題去http://dba.stackexchange.com/ – 2015-02-10 20:39:35