如何限制MySQL中子查询的结果?

时间:2010-09-08 08:43:05

标签: mysql subquery limit

有没有办法限制子查询的结果?我试图实现的那种事情可以通过以下查询来解释:

SELECT *
FROM product p
JOIN (
    SELECT price
    FROM supplierPrices sp
    ORDER BY price ASC
    LIMIT 1
) ON (p.product_id = sp.product_id)

这个想法是从一张包含所有价格数据的表中获得特定产品的最低价格。 LIMIT 1限制整个结果集,而排除它会导致每个价格返回一行,并带有重复的产品数据。我试过GROUP BY price也无济于事。

一旦限制正常,我也需要应用IFNULL,这样如果任何供应商都没有找到任何价格,它就可以返回一个提供的字符串,例如“n / a”而不是NULL。我想这只是意味着修改SELECT如下,并将JOIN更改为LEFT JOIN

SELECT *, IFNULL(price,'n/a')

1 个答案:

答案 0 :(得分:2)

稍微扩展一下Wolfy的答案,并牢记这是未经测试的:

SELECT *
FROM product p
LEFT JOIN (
    SELECT product_id, MIN(price)
    FROM supplierPrices sp
    GROUP BY product_id
) x ON (p.product_id = x.product_id)

而且,正如你所说,它应该只是在那个专栏上做一个IFNULL用一些明智的东西代替它。