我确定这是一个简单的问题,我想它被问了很多次,但我无法从其他答案中弄清楚,抱歉。
我使用最新版本的 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)