【问题标题】:Limit JOIN query on specific table限制特定表的 JOIN 查询
【发布时间】:2011-03-25 07:11:49
【问题描述】:

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

每种产品都有不同数量的颜色可供选择;有些只有一种颜色,有些可以有 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 种产品,但对每种产品的颜色没有限制?

提前致谢!

【问题讨论】:

    标签: mysql join group-by limit


    【解决方案1】:
    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 
    

    编辑:固定查询

    【讨论】:

    • 您的查询几乎是正确的,删除​​ GROUP BY p.ProductID 就可以了!谢谢!
    猜你喜欢
    • 2013-08-09
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2017-03-20
    • 1970-01-01
    • 2011-01-28
    • 2013-04-07
    相关资源
    最近更新 更多