sql >> Database teknologi >  >> RDS >> Database

SQL mindre end () operatør for begyndere

I SQL er mindre end-operatoren (< ) sammenligner to udtryk og returnerer TRUE hvis venstre operand har en lavere værdi end højre operand; ellers er resultatet FALSE .

Eksempel

Her er et eksempel til at demonstrere.

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          |
+------+--------------------+---------------+-------------+--------------+

Denne forespørgsel returnerer alle byer, der har en befolkning på mindre end 600.

Eksklusiv

Operatoren mindre end inkluderer ikke den angivne værdi i sin evaluering.

For eksempel returnerer følgende eksempel ikke 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           |
+------+-------------+---------------+-------------+--------------+

For at inkludere byer med en befolkning på 300 skal vi øge vores specificerede værdi:

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          |
+------+-------------+---------------+-------------+--------------+

Datoer

Her er et eksempel for at demonstrere brugen af ​​mindre end-operatoren til at sammenligne datoværdier.

SELECT PetName, DOB 
FROM Pets
WHERE DOB < '2020-01-01';

Resultat:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+

Strenge

Du kan også bruge mindre end-operatoren til at sammenligne strengværdier. Når du sammenligner med en strengværdi, skal du bruge anførselstegn omkring strengen.

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       |
+------+------------------------------+---------------+---------------------+--------------+

Denne forespørgsel returnerer alle byer, der er mindre end Ab . Grundlæggende returnerer den alle byer, der starter med bogstaver lavere end Ab .

Flere betingelser

Hvis du har flere betingelser, kan du bruge flere mindre end operatorer.

Sådan:

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        |
+------+--------+---------------+------------+--------------+

Forrang

Du kan også bruge en kombination af operatorer, når du filtrerer resultaterne.

Bemærk, at SQL har en rækkefølge, som den tildeler til forskellige operatortyper. For eksempel evaluerer den eventuelle betingede operatorer før logiske operatorer, såsom AND og OR . Den evaluerer også enhver AND operatorer før enhver OR operatører.

Parenteser har en højere prioritet end alle operatorer, og du kan derfor bruge parenteser til at angive den rækkefølge, som hver betingelse skal evalueres i.

Overvej følgende eksempel:

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 denne forespørgsel angav jeg ingen parenteser, og derfor AND operatoren blev evalueret før OR operatør.

Derfor fik vi rækker, der opfyldte enten Name < 'Ab' AND Population < 100000 eller District = 'Canary Islands' . Bare ved at se på dette kan vi se, at alle byer fra De Kanariske Øer vil blive returneret, plus alle byer, der opfylder de første kriterier.

Det er ligesom at gøre følgende:

SELECT * FROM city 
WHERE (Name < 'Ab' 
    AND Population < 100000)
    OR District = 'Canary Islands';

Det ville give os det samme resultat som den forrige forespørgsel uden parentes.

Men se, hvad der sker, når vi flytter parenteserne til OR tilstand.

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        |
+------+------------------------------+---------------+----------------+--------------+

Denne gang fik vi kun de byer, der tilfredsstillede både Population < 100000 OR District = 'Canary Islands' og Name < 'Ab' .

Nægter betingelsen

Du kan bruge NOT operatør for at ophæve den betingelse, som stilles til rådighed af den mindre end operatør. Her er et eksempel:

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 |
+-----------+------------+

  1. Brug af LogMiner til at finde aktuelle ændringer

  2. Trigger for at forhindre indsættelse for duplikerede data af to kolonner

  3. Korrekt metode til at slette over 2100 rækker (efter ID) med Dapper

  4. Opret en brugerdefineret forsendelsesmetode i OpenCart:Anden del