为此,如果您只需要“item_id”,则不一定需要“items”表。
首先编写一个查询,获取每个 item_id 的最新评论时间,如下所示:
SELECT item_id, MAX(posted_at) AS latestComment
FROM comments
GROUP BY item_id;
现在,您可以在 item_id 和 latestComment 列匹配的条件下将其与您的 cmets 表连接,以获得每个项目的最新评论作者:
SELECT c.item_id, c.author_id, c.posted_at
FROM comments c
JOIN(
SELECT item_id, MAX(posted_at) AS latestComment
FROM comments
GROUP BY item_id) temp ON temp.item_id = c.item_id AND temp.latestComment = c.posted_at;
如果您确实需要来自 items 表的任何信息,您可以使用 item_id 列将上述查询连接到 items 表以获得您需要的信息。
编辑
如果您想为项目添加要求,您可以加入上表,并将它们放在 WHERE 子句甚至是加入的 ON 语句中,如下所示:
SELECT c.item_id, c.author_id, c.posted_at
FROM comments c
JOIN items i ON i.item_id = c.item_id AND i.title LIKE '%Apple%'
JOIN(
SELECT item_id, MAX(posted_at) AS latestComment
FROM comments
GROUP BY item_id) temp ON temp.item_id = c.item_id AND temp.latestComment = c.posted_at;
我只是提出了一个示例要求。此查询应提取标题包含“Apple”一词的所有项目的最新评论。请注意,这是一个内部连接,因此您只会看到具有 cmets 的项目。如果您想查看所有项,我建议使用外连接。