V SQL je operátor větší než (>
) porovná dva výrazy a vrátí TRUE
má-li levý operand hodnotu vyšší než pravý operand; jinak vrátí FALSE
.
Příklad
Zde je příklad k demonstraci.
SELECT * FROM city
WHERE Population > 9000000;
Výsledek:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Tento dotaz vrátí všechna města, která mají více než 9 milionů obyvatel.
Exkluzivní
Operátor větší než nezahrnuje zadanou hodnotu do svého vyhodnocení.
Například následující příklad nevrací Karáčí, které má podle této databáze přesně 9269265 obyvatel:
SELECT * FROM city
WHERE Population > 9269265;
Výsledek:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Abychom zahrnuli města s počtem obyvatel 9269265, museli bychom snížit naši zadanou hodnotu:
SELECT * FROM city
WHERE Population > 9269264;
Výsledek:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Buď to, nebo bychom mohli použít větší nebo rovno (>=
). ) operátor.
SELECT * FROM city
WHERE Population >= 9269265;
Výsledek:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Data
Zde je příklad, který demonstruje použití operátoru větší než k porovnání hodnot data.
SELECT PetName, DOB
FROM Pets
WHERE DOB > '2020-01-01';
Výsledek:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+
Řetězce
K porovnání hodnot řetězců můžete také použít operátor větší než. Při porovnávání s hodnotou řetězce použijte kolem řetězce uvozovky.
SELECT * FROM city
WHERE Name > 'Zukovski'
ORDER BY Name;
Výsledek:
+------+----------+---------------+------------+--------------+ | 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 | +------+----------+---------------+------------+--------------+
Více podmínek
Pokud máte více podmínek, můžete použít více operátorů větší než.
Takhle:
SELECT * FROM city
WHERE Name > 'Zukovski' AND Population > 200000;
Výsledek:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
Prednost
Při filtrování výsledků můžete také použít kombinaci operátorů.
Všimněte si, že SQL má pořadí priority, které přiřazuje různým typům operátorů. Například vyhodnocuje všechny podmíněné operátory před logickými operátory, jako je AND
a OR
. Vyhodnocuje také všechny AND
operátory před libovolným OR
operátory.
Závorky mají vyšší prioritu než všechny operátory, a proto můžete pomocí závorek určit pořadí, ve kterém se mají jednotlivé podmínky vyhodnocovat.
Zvažte následující příklad:
SELECT * FROM city
WHERE Name > 'Zukovski'
AND Population > 100000
OR District = 'Overijssel';
Výsledek:
+------+----------+---------------+------------+--------------+ | 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 | +------+----------+---------------+------------+--------------+
V tomto dotazu jsem neuvedl žádné závorky, a proto AND
operátor byl vyhodnocen před OR
operátor.
Proto jsme dostali řádky, které splňovaly buď Name > 'Zukovski' AND Population > 100000
nebo District = 'Overijssel'
. Pouhým pohledem na to můžeme říci, že budou vrácena všechna města z okresu Overijssel plus všechna města, která splňují první kritéria.
Je to jako udělat následující:
SELECT * FROM city
WHERE (Name > 'Zukovski'
AND Population > 100000)
OR District = 'Overijssel';
To by nám dalo stejný výsledek jako předchozí dotaz bez závorek.
Ale podívejte se, co se stane, když přesuneme závorky do OR
podmínka.
SELECT * FROM city
WHERE Name > 'Zukovski'
AND (Population > 100000
OR District = 'Overijssel');
Výsledek:
+------+---------+---------------+------------+--------------+ | 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 | +------+---------+---------------+------------+--------------+
Tentokrát jsme dostali pouze ta města, která splnila obě Population > 100000 OR District = 'Overijssel'
a Name > 'Overijssel'
.
To vedlo k tomu, že bylo vráceno pouze jedno město z Overijsselu, na rozdíl od dvou v předchozím dotazu.
Negace podmínky
Můžete použít NOT
operátor negovat podmínku poskytnutou operátorem větší než. Zde je příklad:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB > '2019-12-31';
Výsledek:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+