In SQL, l'operatore maggiore di (>
) confronta due espressioni e restituisce TRUE
se l'operando di sinistra ha un valore maggiore dell'operando di destra; in caso contrario, restituisce FALSE
.
Esempio
Ecco un esempio da dimostrare.
SELECT * FROM city
WHERE Population > 9000000;
Risultato:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 2822 | Karachi | PAK | Sindh | 9269265 | +------+-----------------+---------------+--------------+--------------+
Questa query restituisce tutte le città con una popolazione superiore a 9 milioni.
Esclusivo
L'operatore maggiore di non include il valore specificato nella sua valutazione.
Ad esempio, l'esempio seguente non restituisce Karachi, che, secondo questo database, ha una popolazione di esattamente 9269265:
SELECT * FROM city
WHERE Population > 9269265;
Risultato:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | +------+-----------------+---------------+--------------+--------------+
Per includere le città con una popolazione di 9269265, dovremmo diminuire il nostro valore specificato:
SELECT * FROM city
WHERE Population > 9269264;
Risultato:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 2822 | Karachi | PAK | Sindh | 9269265 | +------+-----------------+---------------+--------------+--------------+
O quello, o potremmo usare il maggiore o uguale a (>=
) operatore.
SELECT * FROM city
WHERE Population >= 9269265;
Risultato:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 2822 | Karachi | PAK | Sindh | 9269265 | +------+-----------------+---------------+--------------+--------------+
Date
Ecco un esempio per dimostrare l'utilizzo dell'operatore maggiore di per confrontare i valori della data.
SELECT PetName, DOB
FROM Pets
WHERE DOB > '2020-01-01';
Risultato:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+
Stringhe
Puoi anche utilizzare l'operatore maggiore di per confrontare i valori di stringa. Quando si confronta con un valore stringa, utilizzare le virgolette attorno alla stringa.
SELECT * FROM city
WHERE Name > 'Zukovski'
ORDER BY Name;
Risultato:
+------+----------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+----------+---------------+------------+--------------| | 2669 | Zumpango | MEX | México | 99781 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 28 | Zwolle | NLD | Overijssel | 105819 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+----------+---------------+------------+--------------+
Condizioni multiple
Se hai più condizioni, puoi utilizzare più operatori maggiori di.
In questo modo:
SELECT * FROM city
WHERE Name > 'Zukovski' AND Population > 200000;
Risultato:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
Precedenza
Puoi anche utilizzare una combinazione di operatori per filtrare i risultati.
Si noti che SQL ha un ordine di precedenza che assegna a diversi tipi di operatore. Ad esempio, valuta qualsiasi operatore condizionale prima di qualsiasi operatore logico, come AND
e OR
. Valuta anche qualsiasi AND
operatori prima di qualsiasi OR
operatori.
Le parentesi hanno una precedenza maggiore rispetto a tutti gli operatori, quindi puoi utilizzare le parentesi per specificare l'ordine in cui deve essere valutata ciascuna condizione.
Considera il seguente esempio:
SELECT * FROM city
WHERE Name > 'Zukovski'
AND Population > 100000
OR District = 'Overijssel';
Risultato:
+------+----------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+----------+---------------+------------+--------------| | 15 | Enschede | NLD | Overijssel | 149544 | | 28 | Zwolle | NLD | Overijssel | 105819 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+----------+---------------+------------+--------------+
In questa query, non ho fornito parentesi, quindi AND
l'operatore è stato valutato prima di OR
operatore.
Pertanto abbiamo ottenuto righe che soddisfacevano sia Name > 'Zukovski' AND Population > 100000
o District = 'Overijssel'
. Possiamo dire solo guardando questo che verranno restituite tutte le città del distretto di Overijssel, più tutte le città che soddisfano i primi criteri.
È come fare quanto segue:
SELECT * FROM city
WHERE (Name > 'Zukovski'
AND Population > 100000)
OR District = 'Overijssel';
Questo ci darebbe lo stesso risultato della query precedente senza parentesi.
Ma guarda cosa succede quando spostiamo le parentesi su OR
condizione.
SELECT * FROM city
WHERE Name > 'Zukovski'
AND (Population > 100000
OR District = 'Overijssel');
Risultato:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 28 | Zwolle | NLD | Overijssel | 105819 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
Questa volta abbiamo solo quelle città che soddisfano entrambi Population > 100000 OR District = 'Overijssel'
e Name > 'Overijssel'
.
Ciò ha comportato la restituzione di una sola città dell'Overijssel, rispetto alle due della query precedente.
Negazione della condizione
Puoi usare il NOT
operatore per negare la condizione fornita dall'operatore maggiore di. Ecco un esempio:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB > '2019-12-31';
Risultato:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+