You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含Productos与Productos_Presentaciones表的库存数据库中查询库存最高的单个产品?

我来帮你解决这个问题——你的原查询之所以返回多个结果,是因为GROUP BY p.Nombre会把每个产品分组后计算它的最大库存,所以会列出所有产品各自的最大库存值。要只拿到全局库存最高的那一个产品,我们可以用几种不同的方案,你可以根据自己使用的数据库类型选择:

方案1:先找全局最大库存,再关联查询(通用所有数据库)

这种方法兼容性最好,几乎所有SQL数据库都支持。先通过子查询找到库存的最大值,再关联两张表找出对应的产品:

SELECT p.Nombre AS PRODUCTO, pp.Existencias AS EXISTENCIA
FROM Productos_Presentaciones pp
JOIN Productos p ON pp.Id_Producto = p.Id_Producto
WHERE pp.Existencias = (SELECT MAX(Existencias) FROM Productos_Presentaciones)

注意:如果有多个产品的库存都是这个最大值,这个查询会返回所有符合的结果。如果只需要返回其中一个,可以在末尾添加LIMIT 1(MySQL/PostgreSQL)或者TOP 1(SQL Server)。

方案2:排序后取第一条(适合支持LIMIT/TOP的数据库)

直接按库存降序排列结果,然后只取第一条记录,写法更简洁:

  • 针对MySQL/PostgreSQL:
SELECT p.Nombre AS PRODUCTO, pp.Existencias AS EXISTENCIA
FROM Productos_Presentaciones pp
JOIN Productos p ON pp.Id_Producto = p.Id_Producto
ORDER BY pp.Existencias DESC
LIMIT 1;
  • 针对SQL Server:
SELECT TOP 1 p.Nombre AS PRODUCTO, pp.Existencias AS EXISTENCIA
FROM Productos_Presentaciones pp
JOIN Productos p ON pp.Id_Producto = p.Id_Producto
ORDER BY pp.Existencias DESC;

方案3:用窗口函数处理并列情况(进阶用法)

如果需要处理「多个产品库存并列最高」的场景,窗口函数能更灵活地控制结果:

SELECT PRODUCTO, EXISTENCIA
FROM (
    SELECT 
        p.Nombre AS PRODUCTO, 
        pp.Existencias AS EXISTENCIA,
        -- 按库存降序排名,相同库存会有相同排名
        RANK() OVER (ORDER BY pp.Existencias DESC) AS ranking
    FROM Productos_Presentaciones pp
    JOIN Productos p ON pp.Id_Producto = p.Id_Producto
) AS ranked_products
WHERE ranking = 1;

这里用RANK()会保留并列排名(比如两个产品都是最高库存,都会显示);如果只想取其中一个,把RANK()换成ROW_NUMBER()即可。

内容的提问来源于stack exchange,提问作者Enrique González Carrillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:12:45