В SQL операторът по-голям или равен на (>=
) сравнява два израза и връща TRUE
ако левият операнд има стойност, по-голяма или равна на десния операнд; в противен случай връща FALSE
.
Пример
Ето пример за демонстрация.
SELECT * FROM city
WHERE Population >= 9269265
ORDER BY Population ASC;
Резултат:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Тази заявка връща всички градове с население по-голямо или равно на 9269265.
Включително
Операторът по-голямо или равно на включва посочената стойност в своята оценка.
Например предишната заявка включваше Карачи, който според тази база данни има население от точно 9269265.
Ако искаме да изключим градове с това население, ще трябва или да увеличим посочената стойност:
SELECT * FROM city
WHERE Population >= 9269266
ORDER BY Population ASC;
Резултат:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Или можем просто да използваме по-голямото от (>
) вместо това:
SELECT * FROM city
WHERE Population > 9269265
ORDER BY Population ASC;
Резултат:
+------+-----------------+---------------+--------------+--------------+ | 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 | +------+-----------------+---------------+--------------+--------------+
Дати
Ето пример за демонстриране на използването на оператора по-голямо или равно на за сравняване на стойностите за дата.
SELECT PetName, DOB
FROM Pets
WHERE DOB >= '2020-03-15';
Резултат:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+
Стрингове
Можете също да използвате оператора по-голямо или равно на, за да сравните стойностите на низовете. Когато сравнявате със стойност на низ, използвайте кавички около низа.
SELECT * FROM city
WHERE Name >= 'Zukovski'
ORDER BY Name;
Резултат:
+------+----------+---------------+------------+--------------+ | 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 | +------+----------+---------------+------------+--------------+
Множество условия
Ако имате няколко условия, можете да използвате няколко >=
оператори.
Като това:
SELECT * FROM city
WHERE Name >= 'Zukovski' AND Population >= 200000;
Резултат:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
Приоритет
Можете също да използвате комбинация от оператори, когато филтрирате резултатите.
Имайте предвид, че SQL има ред на приоритет, който присвоява на различни типове оператори. Например, той оценява всички условни оператори преди логически оператори, като AND
и OR
. Той също така оценява всяко AND
оператори преди всяко OR
оператори.
Скобите имат по-висок приоритет от всички оператори и затова можете да използвате скоби, за да посочите реда, в който трябва да се оценява всяко условие.
Помислете за следния пример:
SELECT * FROM city
WHERE Name >= 'Zukovski'
AND Population >= 100000
OR District = 'Overijssel';
Резултат:
+------+----------+---------------+------------+--------------+ | 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 | +------+----------+---------------+------------+--------------+
В тази заявка не предоставих никакви скоби и така AND
операторът е оценен преди OR
оператор.
Следователно получихме редове, които отговарят на или Name >= 'Zukovski' AND Population >= 100000
или District = 'Overijssel'
. Само като погледнем това, можем да кажем, че всички градове от квартал Оверийсел ще бъдат върнати, плюс всички градове, които отговарят на първите критерии.
Това е като да направите следното:
SELECT * FROM city
WHERE (Name >= 'Zukovski'
AND Population >= 100000)
OR District = 'Overijssel';
Това ще ни даде същия резултат като предишната заявка без скоби.
Но вижте какво се случва, когато преместим скобите в OR
състояние.
SELECT * FROM city
WHERE Name >= 'Zukovski'
AND (Population >= 100000
OR District = 'Overijssel');
Резултат:
+------+---------+---------------+------------+--------------+ | 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 | +------+---------+---------------+------------+--------------+
Този път получихме само онези градове, които удовлетвориха и двете Population >= 100000 OR District = 'Overijssel'
и Name >= 'Overijssel'
.
Това доведе до върнат само един град от Overijssel, за разлика от два в предишната заявка.
Отрицание на условието
Можете да използвате NOT
оператор за отхвърляне на условието, предоставено от >=
оператор. Ето един пример:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB >= '2019-12-31';
Резултат:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+