V SQL je operátor větší než nebo roven (>=
) porovná dva výrazy a vrátí TRUE
jestliže levý operand má hodnotu větší nebo rovnou pravému operandu; jinak vrátí FALSE
.
Příklad
Zde je příklad k demonstraci.
SELECT * FROM city
WHERE Population >= 9269265
ORDER BY Population ASC;
Výsledek:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 2822 | Karachi | PAK | Sindh | 9269265 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Tento dotaz vrátí všechna města, která mají počet obyvatel větší nebo roven 9269265.
Včetně
Operátor větší než nebo rovno zahrnuje zadanou hodnotu do svého vyhodnocení.
Například předchozí dotaz zahrnoval Karáčí, které má podle této databáze přesně 9269265 obyvatel.
Pokud bychom chtěli vyloučit města s tímto počtem obyvatel, museli bychom buď zvýšit zadanou hodnotu:
SELECT * FROM city
WHERE Population >= 9269266
ORDER BY Population ASC;
Výsledek:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Nebo bychom mohli jednoduše použít větší než (>
) místo toho:
SELECT * FROM city
WHERE Population > 9269265
ORDER BY Population ASC;
Výsledek:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Data
Zde je příklad, který demonstruje použití operátoru větší než nebo rovno k porovnání hodnot data.
SELECT PetName, DOB
FROM Pets
WHERE DOB >= '2020-03-15';
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ší nebo rovno. 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 | |------+----------+---------------+------------+--------------| | 3756 | Zukovski | RUS | Moskova | 96500 | | 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átory.
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 by měla být každá podmínka vyhodnocena.
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, který neguje podmínku poskytnutou >=
operátor. 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 | +-----------+------------+