Ik moet de grootste waarde uit twee velden halen:
SELECT MAX(field1), MAX(field2)
Hoe kan ik nu de meeste waarde uit deze twee halen?
Antwoord 1, autoriteit 100%
Misschien wilt u de GREATEST()
functie:
SELECT GREATEST(field1, field2);
Als u het absolute maximum uit alle rijen wilt halen, kunt u het volgende gebruiken:
SELECT GREATEST(MAX(field1), MAX(field2));
Voorbeeld 1:
SELECT GREATEST(1, 2);
+----------------+
| GREATEST(1, 2) |
+----------------+
| 2 |
+----------------+
1 row in set (0.00 sec)
Voorbeeld 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)
Antwoord 2, autoriteit 22%
In het geval dat u de GREATEST() selecteert voor elke rij
SELECT GREATEST(field1, field2)
Het geeft NULLterug als een van de velden NULL is. Je zou IFNULL kunnen gebruiken om dit op te lossen
SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))
Antwoord 3, autoriteit 3%
mysql> SELECT GREATEST(2,0);
-> 2
Dus, probeer:
mysql> SELECT GREATEST(MAX(field1), MAX(field2));
Antwoord 4
SELECT max( CASE
WHEN field1 > field2 THEN field1
ELSE field2
END ) as biggestvalue
FROM YourTable;
Antwoord 5
Gebruik van GREATEST/LEAST met MIN/MAX
GREATEST/LEAST: gebruikt met de kolommen, wanneer u de maximale of minimale waarde van de verschillende kolommen wilt vinden.
MIN/MAX: gebruikt met de rijen, wanneer u de maximale of minimale waarde van de verschillende rijen wilt vinden:
Voorbeeldtabel:
SELECT GREATEST(col_a, col_b, col_c) FROM temp;
SELECT MIN(GREATEST(col_a, col_b, col_c)) FROM temp; # 3 as output
SELECT MAX(GREATEST(col_a, col_b, col_c)) FROM temp; # 9 as output
SELECT LEAST(col_a, col_b, col_c) FROM temp;
SELECT MIN(LEAST(col_a, col_b, col_c)) FROM temp; # 1 as output
SELECT MAX(LEAST(col_a, col_b, col_c)) FROM temp; # 7 as output