I SQL är mindre än-operatorn (<
) jämför två uttryck och returnerar TRUE
om den vänstra operanden har ett lägre värde än den högra operanden; annars blir resultatet FALSE
.
Exempel
Här är ett exempel att visa.
SELECT * FROM city
WHERE Population < 600;
Resultat:
+------+--------------------+---------------+-------------+--------------+ | 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 | +------+--------------------+---------------+-------------+--------------+
Den här frågan returnerar alla städer som har en befolkning på mindre än 600.
Exklusivt
Operatören mindre än inkluderar inte det angivna värdet i sin utvärdering.
Följande exempel returnerar till exempel inte Fakaofo, som har en befolkning på 300:
SELECT * FROM city
WHERE Population < 300;
Resultat:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | +------+-------------+---------------+-------------+--------------+
För att inkludera städer med en befolkning på 300, skulle vi behöva öka vårt angivna värde:
SELECT * FROM city
WHERE Population < 301;
Resultat:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Datum
Här är ett exempel för att visa hur man använder mindre än-operatorn för att jämföra datumvärden.
SELECT PetName, DOB
FROM Pets
WHERE DOB < '2020-01-01';
Resultat:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+
Strängar
Du kan också använda mindre än-operatorn för att jämföra strängvärden. När du jämför med ett strängvärde, använd citattecken runt strängen.
SELECT * FROM city
WHERE Name < 'Ab';
Resultat:
+------+------------------------------+---------------+---------------------+--------------+ | 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 | +------+------------------------------+---------------+---------------------+--------------+
Den här frågan returnerar alla städer som är mindre än Ab
. I princip returnerar den alla städer som börjar med bokstäver lägre än Ab
.
Flera villkor
Om du har flera villkor kan du använda flera mindre än operatorer.
Så här:
SELECT * FROM city
WHERE Name < 'Ab' AND Population < 100000;
Resultat:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
Tillrang
Du kan också använda en kombination av operatorer när du filtrerar resultaten.
Observera att SQL har en prioritetsordning som den tilldelar olika operatörstyper. Till exempel utvärderar den eventuella villkorliga operatorer före logiska operatorer, såsom AND
och OR
. Den utvärderar också alla AND
operatorer före någon OR
operatörer.
Parenteser har högre prioritet än alla operatorer, så du kan använda parenteser för att ange i vilken ordning varje villkor ska utvärderas.
Tänk på följande exempel:
SELECT * FROM city
WHERE Name < 'Ab'
AND Population < 100000
OR District = 'Canary Islands';
Resultat:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
I den här frågan angav jag inga parenteser, och därför AND
operatorn utvärderades före OR
operatör.
Därför fick vi rader som uppfyllde antingen Name < 'Ab' AND Population < 100000
eller District = 'Canary Islands'
. Vi kan se bara genom att titta på detta att alla städer från Kanarieöarna kommer att återlämnas, plus alla städer som uppfyller de första kriterierna.
Det är som att göra följande:
SELECT * FROM city
WHERE (Name < 'Ab'
AND Population < 100000)
OR District = 'Canary Islands';
Det skulle ge oss samma resultat som den föregående frågan utan parentes.
Men se vad som händer när vi flyttar parenteserna till OR
skick.
SELECT * FROM city
WHERE Name < 'Ab'
AND (Population < 100000
OR District = 'Canary Islands');
Resultat:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
Den här gången fick vi bara de städer som tillfredsställde både Population < 100000 OR District = 'Canary Islands'
och Name < 'Ab'
.
Negerar villkoret
Du kan använda NOT
operatör för att förneka villkoret som tillhandahålls av mindre än operatören. Här är ett exempel:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB < '2019-12-31';
Resultat:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+