gpt4 book ai didi

PHP/MySQL : Get last record of table in a Join AND row count of the joined table

转载 作者:行者123 更新时间:2023-11-29 02:34:13 25 4
gpt4 key购买 nike

好的,我有两个表,一个类别表和一个帖子表。

我希望构建一个查询来返回每个类别、该类别的帖子表中的最后一条记录 (category.id = post.category_id) 以及 post.category_id = category.id 的所有帖子的行数)

类别列表,每个类别都有该类别的最新帖子记录和该类别的帖子数量。

我已经尝试了各种连接和子选择,并且我设法获得了类别列表、他们的帖子数和他们的第一篇帖子(我需要最后一篇)。

我还设法获得了类别列表和他们的最后一篇帖子,但不是帖子数。

任何帮助/指导将不胜感激!

最佳答案

试试这个:

SELECT category_id, MAX(post_id) AS post_id, COUNT(*) AS posts
FROM post
GROUP BY category_id

这假设您有一个严格递增且唯一的列 post_id

如果您没有这样的字段,但是您有例如 post_date 不是唯一的,在极少数情况下,您可能会得到某些类别的两行,其中两个帖子具有完全相同的时间戳。

要同时获取没有帖子的类别,请使用 LEFT JOIN:

SELECT
category.id AS category_id,
MAX(post.id) AS post_id,
COUNT(post.category_id) AS posts
FROM category
LEFT JOIN post
ON category.id = post.category_id
GROUP BY category.id

如果您需要每个表中的更多列,您可以将上面的结果与原始表连接起来:

SELECT *
FROM
(
SELECT
category.id AS category_id,
MAX(post.id) AS post_id,
COUNT(post.category_id) AS posts
FROM category
LEFT JOIN post
ON category.id = post.category_id
GROUP BY category.id
) T1
JOIN category
ON T1.category_id = category.id
LEFT JOIN post
ON T1.post_id = post.id

关于PHP/MySQL : Get last record of table in a Join AND row count of the joined table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com