MySQL 两个或多个字段的最大值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2615697/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 15:45:32  来源:igfitidea点击:

Biggest value from two or more fields

mysql

提问by Qiao

I need to get the biggest value from two fields:

我需要从两个领域中获得最大的价值:

SELECT MAX(field1), MAX(field2)

Now, how can I get biggest value from these two?

现在,我怎样才能从这两个中获得最大的价值?

回答by Daniel Vassallo

You may want to use the GREATEST()function:

您可能想要使用该GREATEST()功能:

SELECT GREATEST(field1, field2);

If you want to get the absolute maximum from all the rows, then you may want to use the following:

如果您想从所有行中获得绝对最大值,那么您可能需要使用以下内容:

SELECT GREATEST(MAX(field1), MAX(field2));

Example 1:

示例 1:

SELECT GREATEST(1, 2);
+----------------+
| GREATEST(1, 2) |
+----------------+
|              2 |
+----------------+
1 row in set (0.00 sec)

Example 2:

示例 2:

CREATE TABLE a (a int, b int);

INSERT INTO a VALUES (1, 1);
INSERT INTO a VALUES (2, 1);
INSERT INTO a VALUES (3, 1);
INSERT INTO a VALUES (1, 2);
INSERT INTO a VALUES (1, 4);

SELECT GREATEST(MAX(a), MAX(b)) FROM a;
+--------------------------+
| GREATEST(MAX(a), MAX(b)) |
+--------------------------+
|                        4 |
+--------------------------+
1 row in set (0.02 sec)

回答by davis

In case you're selecting the GREATEST() for each row

如果您为每一行选择 GREATEST()

SELECT GREATEST(field1, field2)

It will return NULLif one of the fields is NULL. You could use IFNULL to solve this

它将返回NULL如果字段为NULL。你可以使用 IFNULL 来解决这个问题

SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))

回答by Ben

mysql> SELECT GREATEST(2,0);
        -> 2

So, try:

所以,试试:

mysql> SELECT GREATEST(MAX(field1), MAX(field2));

回答by DRapp

SELECT max( CASE
                WHEN field1 > field2 THEN field1
                ELSE field2
            END ) as biggestvalue 
FROM YourTable;