【问题标题】:How do I limit the result of a subquery in MySQL?如何限制 MySQL 中子查询的结果?
【发布时间】: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')

【问题讨论】:

    标签: mysql subquery limit


    【解决方案1】:

    只是稍微扩展 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 以将其替换为合理的内容。

    【讨论】:

    • 谢谢,MINGROUP BY id 的组合成功了。
    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多