连续获取最大值

时间:2015-08-12 08:24:00

标签: mysql

对于MySQL中的下表(表中的价格表示不同供应商提供的价格)

Products   | Price1 | Price2 | Price3
Apple      | 2      | 3      | 4
Pear       | 2      | 1      | 1.5
Strawberry | 10     | 12     | 11

我如何得到Apple的最大价格为Price3的结果,Pear的最大价格为Price1,草莓的最大价格为Price2,例如,我希望从上表中检索结果:

Products     | MaximunPrice
Apple        | Price3
Pear         | Price1
Strawberry   | Price2

1 个答案:

答案 0 :(得分:7)

使用GREATEST

SELECT Products,
       CASE GREATEST(Price1, Price2, Price3) 
         WHEN Price1 THEN 'Price1'
         WHEN Price2 THEN 'Price2'
         WHEN Price3 THEN 'Price3'
       END AS MaxPrice
FROM TableName

结果:

Products    MaxPrice
---------------------
Apple       Price3
Pear        Price1
Strawberry  Price2

请参阅SQL Fiddle

中的结果

<强>解释

GREATEST()函数返回给定参数的最大值。

了解更多here

修改

要查找最大的non-null值,您可以使用IFNULLCOALESCE

SELECT Products,
       CASE GREATEST(IFNULL(Price1,0), IFNULL(Price2,0), IFNULL(Price3,0)) 
         WHEN Price1 THEN 'Price1'
         WHEN Price2 THEN 'Price2'
         WHEN Price3 THEN 'Price3'
       END AS MaxPrice
FROM TableName

结果SQL Fiddle