关联表MAX & MIN虚拟列:实现产品price_min与price_max查询
解决方案
你可以使用LEFT JOIN关联两张表,结合MIN()和MAX()聚合函数来获取每个产品的价格极值,同时按产品分组:
SELECT p.id, p.name, MIN(pp.value) AS price_min, MAX(pp.value) AS price_max FROM products p LEFT JOIN products_prices pp ON p.id = pp.product_id GROUP BY p.id, p.name;
说明:
LEFT JOIN确保所有产品都会被列出,哪怕某个产品还没有对应的价格记录(此时price_min和price_max会返回NULL)GROUP BY p.id, p.name指定按产品的唯一标识和名称分组,让聚合函数针对每个产品单独计算价格的最小和最大值MIN(pp.value)和MAX(pp.value)分别提取每组价格中的最小值和最大值,通过AS指定别名匹配你需要的结果列名
查询结果示例:
| id | name | price_min | price_max |
|---|---|---|---|
| 1 | 产品1 | 100 | 1000 |
| 2 | 产品2 | 200 | 2000 |
内容的提问来源于stack exchange,提问作者platkos
相关产品推荐
相关产品推荐

