ho bisogno di ottenere il più grande valore da due campi:grande valore da due o più campi
SELECT MAX(field1), MAX(field2)
Ora, come posso ottenere più valore da questi due?
ho bisogno di ottenere il più grande valore da due campi:grande valore da due o più campi
SELECT MAX(field1), MAX(field2)
Ora, come posso ottenere più valore da questi due?
Si consiglia di utilizzare la funzione di GREATEST()
:
SELECT GREATEST(field1, field2);
Se si desidera ottenere il massimo assoluto da tutte le righe, quindi si consiglia di utilizzare il seguente:
SELECT GREATEST(MAX(field1), MAX(field2));
Esempio 1:
SELECT GREATEST(1, 2);
+----------------+
| GREATEST(1, 2) |
+----------------+
| 2 |
+----------------+
1 row in set (0.00 sec)
Esempio 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)
non so perché, ma solo 'GREATEST (MAX (campo1), MAX (campo2))' funziona. Viene restituito il numero errato (non il più grande) – Qiao
@Qiao: Sì, è necessario 'SELEZIONA GRANDE (MAX (campo1), MAX (campo2));' per ottenere il massimo assoluto da tutte le righe. Se si utilizza 'SELECT GREATEST (field1, field2);' si otterrà un risultato-set con il massimo tra field1 e field2 per ogni riga. –
Questo è quello che stavo cercando ero sicuro che ci fosse una funzione per questo, ma non avevo idea del nome, ora ha perfettamente senso :) –
SELECT max(CASE
WHEN field1 > field2 THEN field1
ELSE field2
END) as biggestvalue
FROM YourTable;
mysql> SELECT GREATEST(2,0);
-> 2
Quindi, cercare:
mysql> SELECT GREATEST(MAX(field1), MAX(field2));
Nel caso in cui si sta selezionando il GREATEST() per ogni riga
SELECT GREATEST(field1, field2)
Si tornerà NULL se uno dei campi è NULL. È possibile utilizzare IFNULL per risolvere questo
SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))
'GREATEST()' per il più grande similmente 'MENO()' per il più piccolo. –