小编Igo*_*gor的帖子

为每位作者选择一篇最新的帖子

我确定这是一个简单的问题,我想它被问了很多次,但我无法从其他答案中弄清楚,抱歉。

我使用最新版本的 PostgreSQL 和 MySQL。我有2张桌子:

CREATE TABLE authors (
    id INT,
    name VARCHAR
)

CREATE TABLE posts (
    id INT,
    author_id INT,
    text VARCHAR,
    date DATE
)
Run Code Online (Sandbox Code Playgroud)

我需要为每个作者选择一个最新的帖子。谢谢!

更新

谢谢,这两个链接都提供了我的问题的答案,但有一些例外。以下所有查询都给出了相同的结果(顺便说一句,哪个最有效?)然后返回的结果集包含所有此类帖子。我应该如何修改这些查询返回正好每位作者一个帖子?

SELECT p1.*
FROM posts p1
LEFT JOIN posts p2 ON p1.author_id = p2.author_id AND p1.date < p2.date
WHERE p2.author_id IS NULL
ORDER BY p1.author_id;

SELECT p1.* 
FROM posts p1
INNER JOIN (
  SELECT author_id, MAX(date) AS max_date
  FROM posts
  GROUP BY author_id) p2
  ON p1.author_id = p2.author_id AND …
Run Code Online (Sandbox Code Playgroud)

mysql postgresql greatest-n-per-group

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

greatest-n-per-group ×1

mysql ×1

postgresql ×1