Grootste waarde uit twee of meer velden

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:

voer hier de afbeeldingsbeschrijving in

SELECT GREATEST(col_a, col_b, col_c) FROM temp;

voer hier de afbeeldingsbeschrijving in

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;

voer hier de afbeeldingsbeschrijving in

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

Other episodes