我想要做的是列出所有类别及其帖子,但仅限制每个类别的帖子。并排除没有任何帖子的类别。
我用两个查询做了这个,得到所有有帖子的类别,循环结果并获得每个类别ID的X个帖子。
如何在一次查询中完成此操作?
编辑:这是我迄今为止所取得的成就......
SELECT p.post_id, c.category_id
FROM category as c
JOIN posts AS p ON p.category_id = c.category_id
WHERE
FIND_IN_SET(p.post_id, (
SELECT SUBSTRING_INDEX(a.post_ids, ',', 10)
FROM
(
SELECT GROUP_CONCAT(b.post_id) AS post_ids, b.category_id
FROM posts as b
GROUP BY b.category_id
) AS a
WHERE a.category_id = c.category_id
))
答案 0 :(得分:0)
要排除所有不带任何帖子的类别,请在类别和帖子之间进行内部联接。如果要限制返回的行数,请使用LIMIT命令。
答案 1 :(得分:-2)
这样的事情
SELECT `category_name`
FROM `categories`
WHERE `posts` !=0
LIMIT 0 , 30