SQLでは、以上の演算子(>=
)2つの式を比較し、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'
。
これにより、前のクエリの2つではなく、Overijsselから1つの都市のみが返されました。
条件を否定する
NOT
を使用できます >=
によって提供される条件を否定する演算子 オペレーター。次に例を示します。
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB >= '2019-12-31';
結果:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+