连续获取最大值

yue*_*ust 1 mysql

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

Products   | Price1 | Price2 | Price3
Apple      | 2      | 3      | 4
Pear       | 2      | 1      | 1.5
Strawberry | 10     | 12     | 11
Run Code Online (Sandbox Code Playgroud)

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

Products     | MaximunPrice
Apple        | Price3
Pear         | Price1
Strawberry   | Price2
Run Code Online (Sandbox Code Playgroud)

Rag*_*ull 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
Run Code Online (Sandbox Code Playgroud)

结果:

Products    MaxPrice
---------------------
Apple       Price3
Pear        Price1
Strawberry  Price2
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle中查看结果

说明:

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

在这里阅读更多.

编辑:

要找到最大的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
Run Code Online (Sandbox Code Playgroud)

SQL小提琴的结果