2011-07-08 109 views
0

我需要一个查询;条件是:Mysql查询获取每个类别的前5个子类别

我想从每个类别中只选择最新的5个子类别;

当前的查询是:

SELECT a.id,a.catagory_name,b.id as sucid,b.subcatagory_name 
FROM category a 
LEFT JOIN subcategory b ON a.id = b.catagory_id 
WHERE a.active='y' AND b.active='y' 
ORDER BY a.priority,b.subcatagory_name 
+1

添加'LIMIT 5'?这就是你需要的一切吗?如果您需要更多信息,请在您的问题中提供更多信息。 – Flimzy

+0

选中此:http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ – malletjo

回答

0

请试试这个。

SELECT a.id,a.catagory_name,b.id as sucid,b.subcatagory_name 
FROM category a 
LEFT JOIN subcategory b ON a.id = b.catagory_id 
WHERE a.active='y' AND b.active='y' 
ORDER BY a.priority,b.category_id DESC 
LIMIT 0,5 

这可能适合你。

+1

为什么0在你的极限?这是默认行为。 – Flimzy

+0

此外,限制适用于整个结果。这不是要求的。 –

+0

这将给一个类别只有五个rec ... – John

0

让我们试试这个:

SELECT a.id,a.catagory_name,B.id as sucid,B.subcatagory_name 
FROM category a 
(SELECT id,subcatagory_name FROM subcategory WHERE catagory_id = a.id ORDER BY id DESC LIMIT 5) AS B 
ON a.id = B.catagory_id 
ORDER BY a.priority,B.category_id; 
+0

mysql 4不支持此查询... – John

相关问题