MySQL子选择限制

时间:2011-09-24 01:03:25

标签: php mysql

我想要做的是列出所有类别及其帖子,但仅限制每个类别的帖子。并排除没有任何帖子的类别。

我用两个查询做了这个,得到所有有帖子的类别,循环结果并获得每个类别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
))

2 个答案:

答案 0 :(得分:0)

要排除所有不带任何帖子的类别,请在类别和帖子之间进行内部联接。如果要限制返回的行数,请使用LIMIT命令。

答案 1 :(得分:-2)

这样的事情

SELECT  `category_name` 
FROM  `categories` 
WHERE  `posts` !=0
LIMIT 0 , 30