W SQL operator mniej niż (<
) porównuje dwa wyrażenia i zwraca TRUE
jeśli lewy operand ma wartość niższą niż prawy operand; w przeciwnym razie wynik to FALSE
.
Przykład
Oto przykład do zademonstrowania.
SELECT * FROM city
WHERE Population < 600;
Wynik:
+------+--------------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------------------+---------------+-------------+--------------| | 62 | The Valley | AIA | – | 595 | | 2316 | Bantam | CCK | Home Island | 503 | | 2317 | West Island | CCK | West Island | 167 | | 2728 | Yaren | NRU | – | 559 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | | 3538 | Città del Vaticano | VAT | – | 455 | +------+--------------------+---------------+-------------+--------------+
To zapytanie zwraca wszystkie miasta o liczbie ludności mniejszej niż 600.
Ekskluzywny
Operator mniej niż nie uwzględnia określonej wartości w swojej ocenie.
Na przykład poniższy przykład nie zwraca Fakaofo, którego populacja wynosi 300:
SELECT * FROM city
WHERE Population < 300;
Wynik:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | +------+-------------+---------------+-------------+--------------+
Aby uwzględnić miasta liczące 300 mieszkańców, musielibyśmy zwiększyć naszą określoną wartość:
SELECT * FROM city
WHERE Population < 301;
Wynik:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Daty
Oto przykład demonstrujący użycie operatora mniej niż do porównywania wartości dat.
SELECT PetName, DOB
FROM Pets
WHERE DOB < '2020-01-01';
Wynik:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+
Struny
Możesz również użyć operatora mniej 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 < 'Ab';
Wynik:
+------+------------------------------+---------------+---------------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+---------------------+--------------| | 20 | ´s-Hertogenbosch | NLD | Noord-Brabant | 129170 | | 548 | Šumen | BGR | Varna | 94686 | | 670 | A Coruña (La Coruña) | ESP | Galicia | 243402 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 2450 | Šiauliai | LTU | Šiauliai | 146563 | | 3097 | Aachen | DEU | Nordrhein-Westfalen | 243825 | | 3318 | Aalborg | DNK | Nordjylland | 161161 | | 3479 | Šostka | UKR | Sumy | 90000 | | 3665 | Šahty | RUS | Rostov-na-Donu | 221800 | | 3736 | Štšolkovo | RUS | Moskova | 104900 | +------+------------------------------+---------------+---------------------+--------------+
To zapytanie zwraca wszystkie miasta, które są mniejsze niż Ab
. Zasadniczo zwraca wszystkie miasta, które zaczynają się od liter mniejszych niż Ab
.
Wiele warunków
Jeśli masz wiele warunków, możesz użyć wielu operatorów mniejszych niż.
Tak:
SELECT * FROM city
WHERE Name < 'Ab' AND Population < 100000;
Wynik:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
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 < 'Ab'
AND Population < 100000
OR District = 'Canary Islands';
Wynik:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 660 | Las Palmas de Gran Canaria | ESP | Canary Islands | 354757 | | 672 | Santa Cruz de Tenerife | ESP | Canary Islands | 213050 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
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 < 'Ab' AND Population < 100000
lub District = 'Canary Islands'
. Wystarczy spojrzeć na to, aby stwierdzić, że wszystkie miasta z Wysp Kanaryjskich zostaną zwrócone, plus wszystkie miasta spełniające pierwsze kryteria.
To tak, jakby wykonać następujące czynności:
SELECT * FROM city
WHERE (Name < 'Ab'
AND Population < 100000)
OR District = 'Canary Islands';
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 < 'Ab'
AND (Population < 100000
OR District = 'Canary Islands');
Wynik:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
Tym razem otrzymaliśmy tylko te miasta, które spełniły wymagania zarówno Population < 100000 OR District = 'Canary Islands'
i Name < 'Ab'
.
Negowanie warunku
Możesz użyć NOT
operator, aby zanegować warunek podany przez operator mniej niż. Oto przykład:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB < '2019-12-31';
Wynik:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+