У меня есть две таблицы, Users(id, username)
а также Posts(id, user_id, content)
, Я хочу перечислить их краткое изложение, я хочу перечислить всех пользователей и первый пост каждого пользователя. Как я могу понять это в одном запросе?
Я попробовал что-то вроде.
SELECT Users.*, Posts.content
FROM Users, Posts
WHERE Posts.user_id=T_Users.id
Но он вернет все сообщения для каждого пользователя (я не могу добавить LIMIT 1
в хвост, конечно, который возвращает только один пользователь).
Некоторые примеры записей:
Таблица пользователей:
id username
1 test1
2 test2
Таблица сообщений:
id user_id content
1 1 This is a test1's content.
2 1 This is another test1's content.
3 2 This is a test2's content.
И я хочу получить результат:
Users.id Users.username Posts.content
1 test1 This is a test1's content.
2 test2 This is a test2's content.
Вот один из подходов, чтобы получить последнюю запись для пользователя, я предполагаю, что последняя запись будет считаться минимальным идентификатором записи
SELECT u.*, p.content
FROM Users u
join Posts p on p.user_id=u.id
join (select user_id ,min(id) id from Posts group by user_id ) p1
on (p.id = p1.id and p.user_id = p1.user_id )
Попробуй это
select min(x.id) as Id,x.user_id,x.content from(
select p.id,p.user_id,p.content from Users u inner join Posts p
on u.id=p.user_id and u.gender=1
)x group by x.user_id
Вы пробовали группу по предложению.
SELECT Users.*, Posts.content
FROM Users, Posts
WHERE Posts.user_id=T_Users.id GROUP BY Posts.user_id