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

时间:2016-12-06 20:30:31

标签: 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                |

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

非常感谢!

3 个答案:

答案 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
        )
)