mysql - 如何返回不同列中的 SQL max() 值?

标签 mysql max

我有以下两张表产品和价格。

价格表如下:

Price ID|Price
6       |1800
7       |2500   
8       |1800

产品表如下:

Product_ID  |Price_ID 
1           | 6       
2           | 7       
3           | 8     

为了了解任何产品的价格,我使用以下方法将两个表连接在一起

 select * from price
 left join product
    on product.Price_ID = price.Price_ID

这给了我以下结果,表明我的价格表中有一些价格未分配给任何产品。

Price_ID|Price  |Product_ID
6       |1800   |NULL
7       |2500   |NULL   
8       |1800   |8
9       |2100   |9

我想知道两件事,价格表中的最高价格是多少,以及任何产品的最高价格是多少?我如何在一个 SQL 语句中完成这个任务?

期望的结果应该是这样的:

max_price | max_price_of_product|
2500      | 2100                |

我尝试将两个 select 语句与 union 结合使用,但结果显示堆叠在一列中

非常感谢!

最佳答案

您可以在 MAX() 函数中使用 IF() 表达式来获取具有匹配 Product_ID 的所有价格的最大值>.

SELECT MAX(price) as max_price, MAX(IF(product_id IS NOT NULL, price, null)) AS max_product_price
FROM price
LEFT JOIN product ON price.Price_ID = product.Price_ID

关于mysql - 如何返回不同列中的 SQL max() 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004295/

相关文章:

mysql - 如何使用 2 列及其数据通过选择查询计算标准差

c# - Linq GroupBy Max 并添加列

web - 所有主要浏览器允许的最大 HTTP 重定向次数是多少?

c# - 获取 List.Max 的索引?

python - 找到运行总和产生的最大值的优雅方法是什么?

xml - 如何在 XQuery 中获取计算值的最大值?

Python MySQL转义特殊字符

mysql - 简单的 SQL 连接查询(我认为)

mysql - 按 order_id 分组并在 mysql 中将 id 分配给 offer_id

php - 使用MySQL和图像目录管理图像