【发布时间】:2010-09-08 08:43:04
【问题描述】:
有没有办法限制子查询的结果?我想要实现的目标可以通过以下查询来解释:
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')
【问题讨论】: