为什么这个MySQL查询会返回这么多结果?

时间:2013-08-19 23:30:33

标签: mysql left-join

我一直在查询连接4个表的查询时遇到太多结果。它在95个结果中返回,有些列重复10次,我认为它应该只有3,并且数据根本不匹配。

我开始撰写这篇文章,并认为我会在sqlfiddle上很好地编写代码以便于解释,但是当我在那里运行查询时,它返回了我想要的结果,有34个结果,并且所有数据都在应该的位置。我想知道为什么查询工作,因为我喜欢它,而不是在我的服务器上。我看到他们增加了一个'额外的:使用在哪里;使用临时;在视图执行链接中使用filesort。那么我该怎么做才能使这个结果明确呢?我正在尝试创建一个显示定价信息的表格。我在这里包含了查询以供参考。

SELECT DISTINCT
    prices.sku,
    prices.base_price,
    prices.min_quantity,
    price_breaks.break_point,
    price_breaks.price,
    price_breaks.bonus,
    product_options.product_code,
    product_options.size,
    product_types.category_type,
    product_types.product_type_name
FROM prices
LEFT JOIN price_breaks ON price_breaks.sku = prices.sku
LEFT JOIN product_options ON product_options.sku = prices.sku
LEFT JOIN product_types ON product_options.product_code = product_types.product_code
WHERE prices.group = "a"
ORDER BY product_code ASC, sku ASC, break_point ASC

这是小提琴: http://sqlfiddle.com/#!2/67c14/1/0

感谢您的任何见解。

1 个答案:

答案 0 :(得分:0)

左连接右侧的一个或多个表必须具有多个匹配的连接行。