W SQL operator większy lub równy (>=
) porównuje dwa wyrażenia i zwraca TRUE
jeśli lewy operand ma wartość większą lub równą prawemu operandowi; w przeciwnym razie zwraca FALSE
.
Przykład
Oto przykład do zademonstrowania.
SELECT * FROM city
WHERE Population >= 9269265
ORDER BY Population ASC;
Wynik:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
To zapytanie zwraca wszystkie miasta, których populacja jest większa lub równa 9269265.
Włącznie
Operator większy lub równy zawiera określoną wartość w swojej ocenie.
Na przykład poprzednie zapytanie obejmowało Karaczi, które według tej bazy danych ma populację dokładnie 9269265.
Gdybyśmy chcieli wykluczyć miasta z taką populacją, musielibyśmy albo zwiększyć określoną wartość:
SELECT * FROM city
WHERE Population >= 9269266
ORDER BY Population ASC;
Wynik:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Lub możemy po prostu użyć większej niż (>
) operator zamiast:
SELECT * FROM city
WHERE Population > 9269265
ORDER BY Population ASC;
Wynik:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Daty
Oto przykład demonstrujący użycie operatora większe lub równe do porównywania wartości dat.
SELECT PetName, DOB
FROM Pets
WHERE DOB >= '2020-03-15';
Wynik:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+
Struny
Możesz również użyć operatora większe lub równe do porównywania wartości ciągów. Porównując z wartością ciągu, użyj cudzysłowów wokół ciągu.
SELECT * FROM city
WHERE Name >= 'Zukovski'
ORDER BY Name;
Wynik:
+------+----------+---------------+------------+--------------+ | 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 | +------+----------+---------------+------------+--------------+
Wiele warunków
Jeśli masz wiele warunków, możesz użyć wielu >=
operatorów.
Tak:
SELECT * FROM city
WHERE Name >= 'Zukovski' AND Population >= 200000;
Wynik:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
Pierwszeństwo
Możesz także użyć kombinacji operatorów podczas filtrowania wyników.
Zauważ, że SQL ma kolejność, którą przypisuje różnym typom operatorów. Na przykład ocenia wszystkie operatory warunkowe przed wszelkimi operatorami logicznymi, takimi jak AND
i OR
. Ocenia również dowolne AND
operatory przed OR
operatorów.
Nawiasy mają wyższy priorytet niż wszystkie operatory, więc możesz użyć nawiasów do określenia kolejności, w jakiej każdy warunek powinien być oceniany.
Rozważ następujący przykład:
SELECT * FROM city
WHERE Name >= 'Zukovski'
AND Population >= 100000
OR District = 'Overijssel';
Wynik:
+------+----------+---------------+------------+--------------+ | 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 | +------+----------+---------------+------------+--------------+
W tym zapytaniu nie podałem żadnych nawiasów, więc AND
operator został oceniony przed OR
operatora.
Dlatego otrzymaliśmy wiersze, które spełniają albo Name >= 'Zukovski' AND Population >= 100000
lub District = 'Overijssel'
. Wystarczy spojrzeć na to, aby stwierdzić, że wszystkie miasta z okręgu Overijssel zostaną zwrócone, a także wszystkie miasta spełniające pierwsze kryteria.
To tak, jakby wykonać następujące czynności:
SELECT * FROM city
WHERE (Name >= 'Zukovski'
AND Population >= 100000)
OR District = 'Overijssel';
To dałoby nam ten sam wynik, co poprzednie zapytanie bez nawiasów.
Ale spójrz, co się stanie, gdy przeniesiemy nawiasy do OR
stan.
SELECT * FROM city
WHERE Name >= 'Zukovski'
AND (Population >= 100000
OR District = 'Overijssel');
Wynik:
+------+---------+---------------+------------+--------------+ | 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 | +------+---------+---------------+------------+--------------+
Tym razem otrzymaliśmy tylko te miasta, które spełniły wymagania zarówno Population >= 100000 OR District = 'Overijssel'
i Name >= 'Overijssel'
.
W rezultacie zwrócono tylko jedno miasto z Overijssel, w przeciwieństwie do dwóch w poprzednim zapytaniu.
Negowanie warunku
Możesz użyć NOT
operator do zanegowania warunku podanego przez >=
operator. Oto przykład:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB >= '2019-12-31';
Wynik:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+