W SQL operator większe niż (>
) porównuje dwa wyrażenia i zwraca TRUE
jeśli lewy operand ma wartość wyższą niż prawy operand; w przeciwnym razie zwraca FALSE
.
Przykład
Oto przykład do zademonstrowania.
SELECT * FROM city
WHERE Population > 9000000;
Wynik:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
To zapytanie zwraca wszystkie miasta o liczbie mieszkańców większej niż 9 milionów.
Ekskluzywny
Operator większa niż nie uwzględnia określonej wartości w swojej ocenie.
Na przykład poniższy przykład nie zwraca Karaczi, które według tej bazy danych ma populację dokładnie 9269265:
SELECT * FROM city
WHERE Population > 9269265;
Wynik:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Aby uwzględnić miasta o liczbie ludności 9269265, musielibyśmy zmniejszyć naszą określoną wartość:
SELECT * FROM city
WHERE Population > 9269264;
Wynik:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Albo to, albo możemy użyć większej lub równej (>=
) operatora.
SELECT * FROM city
WHERE Population >= 9269265;
Wynik:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Daty
Oto przykład demonstrujący użycie operatora większe niż do porównywania wartości dat.
SELECT PetName, DOB
FROM Pets
WHERE DOB > '2020-01-01';
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 niż do porównania wartości ciągu. 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 | |------+----------+---------------+------------+--------------| | 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 większych niż.
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'
.
Spowodowało to zwrócenie tylko jednego miasta z Overijssel, w przeciwieństwie do dwóch w poprzednim zapytaniu.
Negowanie warunku
Możesz użyć NOT
operator, aby zanegować warunek dostarczony przez operator większy niż. 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 | +-----------+------------+