我有以下两张表产品和价格。
价格表如下:
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/