如何选取armazens_has_artigos表stockQuantidade最大值并关联查询artigos表对应nome
SQL查询实现方案
实现逻辑
- 从
armazens_has_artigos表筛选出stockQuantidade字段最大值对应的idArtigos - 关联
artigos表的主键idArtigos,查询对应nome字段值
通用查询语句(兼容所有SQL数据库)
该写法支持多个商品同时达到最高库存的场景,不会遗漏返回结果:
SELECT a.nome FROM artigos a JOIN armazens_has_artigos aha ON a.idArtigos = aha.idArtigos WHERE aha.stockQuantidade = ( SELECT MAX(stockQuantidade) FROM armazens_has_artigos );
简化写法(仅单条最高库存记录时适用)
如果确认最高库存的记录唯一,可使用排序+截取的写法:
SELECT a.nome FROM artigos a JOIN armazens_has_artigos aha ON a.idArtigos = aha.idArtigos ORDER BY aha.stockQuantidade DESC LIMIT 1;
窗口函数写法(适配MySQL8.0+/PostgreSQL/SQL Server等支持窗口函数的数据库)
逻辑更清晰,扩展灵活:
WITH stock_rank AS ( SELECT idArtigos, RANK() OVER(ORDER BY stockQuantidade DESC) AS stock_rank FROM armazens_has_artigos ) SELECT a.nome FROM artigos a JOIN stock_rank sr ON a.idArtigos = sr.idArtigos WHERE sr.stock_rank = 1;
内容的提问来源于stack exchange,提问作者Joao Neves
相关产品推荐
相关产品推荐

