限制特定表上的JOIN查询

时间:2010-08-04 14:18:41

标签: mysql join group-by limit

我正在尝试对两个表执行选择查询,一个包含例如产品,另一个包含可以为这些产品选择的颜色。

每种产品都有不同数量的颜色可供选择;有些只有一种颜色,有些可以有20种。

查询的范围是解析包含所有可用颜色的20个产品的列表。这意味着每个产品的颜色数量不必受限制,但显示的产品可以。

我当前的查询如下所示:

SELECT p.*,
       c.*
FROM Products AS p
LEFT JOIN Colors AS c ON c.ColorProductID = p.ProductID
GROUP BY p.ProductID
ORDER BY p.ProductID ASC, c.ColorID ASC
LIMIT 0, 20

此查询的问题在于它确实只从数据库中提取了20个产品,但它每个产品只提取一种可用颜色,而不是每个产品的所有可用颜色。

如何更改我的查询以仅获取20个产品,但每个产品的颜色没有限制?

提前致谢!

1 个答案:

答案 0 :(得分:6)

SELECT p.*, c.* FROM (select * from Products LIMIT 0,20) AS p 
                LEFT JOIN Colors AS c ON c.ColorProductID=p.ProductID 
        ORDER BY p.ProductID ASC, c.ColorID ASC 

修改:修正了查询