Мне нужна свежая пара глаз на это. У меня есть две таблицы, одна из которых имеет пользователей, а вторая содержит записи входа в систему, несколько записей для каждого пользователя. Я пытаюсь выбрать все записи из первой таблицы и самую последнюю запись из второй таблицы, например, список всех пользователей, но отображать только самые последние действия. Обе таблицы имеют автоинкремент в столбце ID.
Мой код в настоящее время таков:
SELECT u.user_id, u.name, u.email, r.rid, r.user_id
FROM users AS u
LEFT JOIN login_records AS r ON r.user_id = u.user_id
WHERE
r.rid = (
SELECT MAX( rid )
FROM login_records
WHERE user_id = u.user_id
)
Я искал ответы на похожие вопросы в SO и пробовал все из них, но результаты либо возвращали ничего , либо получали только странные результаты (не обязательно самые новые). Идентификатор в обеих таблицах является автоинкрементным, поэтому я подумал, что достаточно просто получить единственный или самый высокий идентификатор для конкретного пользователя, но он либо ничего не возвращает, либо каждый раз совершенно другой выбор.
Я впервые использую JOIN - у меня неправильный JOIN? Нужно ли заказывать или группировать вещи по-другому?
Спасибо за вашу помощь. Это должно быть что-то простое, так как ответ Дэнни Куломба , появляющийся здесь , кажется, работает для других пользователей.