2011-09-24 72 views
1

即時通訊工具試圖做的是列出所有類別及其帖子,但只限制每個類別的帖子。並排除沒有任何帖子的類別。MySQL的子選擇限制

我這樣做了兩個查詢,雖然,得到所有類別有帖子,循環的結果,並獲得每個類別ID的X數量的帖子。

如何在1個查詢中執行此操作?

編輯:這是我完成的,到目前爲止..

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

使用變量來模擬ROW_NUMBER。 –

+2

給我們一些東西。你的數據庫模式是什麼?你試過什麼了? – netcoder

+0

更新了我的帖子.. – Gene

回答

-2

如何對這樣的事情

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

-1,'每個類別的帖子數x'需要在內部選擇中進行子選擇和限制。不是這樣的小事。 – Johan

0

要排除所有類別沒有任何的信息也類別之間的內部連接,並帖子。如果要限制返回的行數,請使用LIMIT命令。