Я хочу получить результаты из таблицы userdata с порядком по левому соединению, его запуск, но его порядок неправильный.LEFT JOIN с 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'. –
Как правило, вопросы sql переходят на http://dba.stackexchange.com/ –