MYSQL 仅限制左侧 table 的结果,但显示右侧 table 的所有结果

MYSQL Only limit results from left table, but show all results from right table

我正在建立一个数据库,用于存储名为“新闻”的网站的 posts。每个新闻 post 可以存储一些 (0-255) 个媒体。我可以这样获取所有数据:

SELECT * 
FROM news 
LEFT JOIN media ON news.id = news_id

哪个 returns:

news.id title created media.id news_id filename
1 Title1 ... NULL NULL NULL
2 Title2 ... NULL NULL NULL
3 Title3 ... NULL NULL NULL
4 Title4 ... NULL NULL NULL
5 Title5 ... 1 5 media1.png
5 Title5 ... 2 5 media2.png

请注意 news.id = 5 出现了两次,因为它有两个关联的图像。

我的目标是像这样获取最新的 3 post

SELECT * 
FROM news 
LEFT JOIN media ON news.id = news_id 
ORDER BY created DESC 
LIMIT 3

哪个 returns:

news.id title created media.id news_id filename
5 Title5 ... 2 5 media2.png
5 Title5 ... 1 5 media1.png
4 Title4 ... NULL NULL NULL

但是我希望 return 所有 ID 为 5、4 和 3 的 post 及其所有媒体,如下所示:

news.id title created media.id news_id filename
5 Title5 ... 2 5 media2.png
5 Title5 ... 1 5 media1.png
4 Title4 ... NULL NULL NULL
3 Title3 ... NULL NULL NULL

MySql 是否可以做到这一点,或者是否有其他数据库组织可以做到这一点?基本上我只想限制 LEFT table 的结果并让“重复”出现,这样我仍然可以获得所有 RIGHT table 数据。我正在使用 PHP 准备好的语句来进行这些 MYSQL 查询,所以我可能无法使用子查询,但我不确定。

Select 来自获取最后 3 个帖子的子查询,而不是整个 table.

SELECT *
FROM (
    SELECT *
    FROM news
    ORDER BY created DESC
    LIMIT 3
) AS news
LEFT JOIN media ON news.id = news_id