我想从左边的连接中获取userdata表中的结果,但是它的运行顺序错误。
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>所有用户
朋友>朋友(每2位用户1行)
消息>行最多400
所以,snipped运行但是它使用了最新的行中最旧的tstamp(时间戳)。
答案 0 :(得分:0)
您正在订购timestamp
ASC,它首先表示最高值。在timestamp
的情况下,它将不再是第一次
而是尝试ORDER BY f.tstamp DESC
此外,我认为您要选择max(f.tstamp)
而不是f.tstamp