我有以下两个表的产品和价格。
价格表如下所示:
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 |
我尝试使用两个与union结合的select语句,但结果显示为堆叠在一列
非常感谢!
答案 0 :(得分:1)
您可以使用IF()
函数中的MAX()
表达式来获取匹配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
答案 1 :(得分:0)
select MAX(Price) as max_price from price
left join product
on product.Price_ID = price.Price_ID
对于max_price列,我没有足够的信息来显示max_price_of_product。
答案 2 :(得分:0)
我相信您需要通过一起使用UNIONed的嵌套SELECT语句来完成此操作。我确定下面的代码在语法上不正确,但希望能指出正确的方向。
Select max_price, max_price_of_Product from
(SELECT Max(Price) As max_price FROM PriceTable
UNION ALL
SELECT Max(Price) As max_price_of_product FROM
(
select * from price
left join product
on product.Price_ID = price.Price_ID
)
)