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
Biggest value from two or more fields
提问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;