在我解释我的问题之前,我将快速回顾一下表结构是如何的:
类型:MySQL 帖子/主题表:
int int** UNIX Time Int Int
--------------------------------------------------
| id | category | postdate | topic_id | is_topic |
--------------------------------------------------
| 1 | a | 12345678 | 1 | 1 |
--------------------------------------------------
| 2 | a | 12345678 | 1 | 0 |
--------------------------------------------------
| 3 | b | 12345678 | 3 | 1 |
--------------------------------------------------
| 4 | b | 12345678 | 3 | 0 |
--------------------------------------------------
| 5 | c | 12345678 | 5 | 1 |
--------------------------------------------------
| 6 | c | 12345678 | 5 | 0 |
--------------------------------------------------
**我正在使用字母使表格更易于阅读
我正在尝试检索每个类别的 4 个最新行,并且我可以使用 GROUP BY 从每个类别中获取 1 个最新行,但我不知道如何为每个类别获取多个。
我尝试过这样的事情:
SELECT *
FROM posts p
WHERE NOT EXISTS
(
SELECT *
FROM posts
WHERE category = p.category
LIMIT 4
)
我还尝试使用人们在 SO 上为其他答案提供的其他答案,但我似乎无法使它们符合我的目的。
我在这里完全迷失了,因为当涉及到这些更复杂的查询时,mysql 并不是我的强项。
任何正确方向的帮助或指示将不胜感激!
谢谢!
更新:请注意,类别的数量不是静态的,并且会发生变化。