Выберите каждую первую запись с идентификатором в результате другой таблицы

У меня есть две таблицы, Users(id, username) а также Posts(id, user_id, content), Я хочу перечислить их краткое изложение, я хочу перечислить всех пользователей и первый пост каждого пользователя. Как я могу понять это в одном запросе?

Я попробовал что-то вроде.

QUERY

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.

0

Решение

Вот один из подходов, чтобы получить последнюю запись для пользователя, я предполагаю, что последняя запись будет считаться минимальным идентификатором записи

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 )

Demo

2

Другие решения

Попробуй это

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
1

Вы пробовали группу по предложению.

SELECT Users.*, Posts.content
FROM Users, Posts
WHERE Posts.user_id=T_Users.id GROUP BY Posts.user_id
0
По вопросам рекламы [email protected]