sql >> データベース >  >> RDS >> Database

初心者のためのSQLIN演算子

    SQLでは、IN 演算子を使用すると、値のリストに基づいてクエリ結果をフィルタリングできます。

    また、これを使用して、サブクエリによって返される任意の値と一致させることもできます(サブクエリは、別のクエリ内にネストされたクエリです)。

    ソーステーブル

    このページの例では、次の表を使用しています。

    SELECT * FROM PetTypes;
    SELECT * FROM Pets;

    結果:

    +-------------+-----------+
    | PetTypeId   | PetType   |
    |-------------+-----------|
    | 1           | Bird      |
    | 2           | Cat       |
    | 3           | Dog       |
    | 4           | Rabbit    |
    +-------------+-----------+
    (4 rows affected)
    +---------+-------------+-----------+-----------+------------+
    | PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
    |---------+-------------+-----------+-----------+------------|
    | 1       | 2           | 3         | Fluffy    | 2020-11-20 |
    | 2       | 3           | 3         | Fetch     | 2019-08-16 |
    | 3       | 2           | 2         | Scratch   | 2018-10-01 |
    | 4       | 3           | 3         | Wag       | 2020-03-15 |
    | 5       | 1           | 1         | Tweet     | 2020-11-28 |
    | 6       | 3           | 4         | Fluffy    | 2020-09-17 |
    | 7       | 3           | 2         | Bark      | NULL       |
    | 8       | 2           | 4         | Meow      | NULL       |
    +---------+-------------+-----------+-----------+------------+
    (8 rows affected)

    INを示す例を次に示します。 オペレーター。

    SELECT 
        PetId, 
        PetName, 
        DOB 
    FROM Pets
    WHERE PetName IN ('Fluffy', 'Bark', 'Wag');

    結果:

    +---------+-----------+------------+
    | PetId   | PetName   | DOB        |
    |---------+-----------+------------|
    | 1       | Fluffy    | 2020-11-20 |
    | 4       | Wag       | 2020-03-15 |
    | 6       | Fluffy    | 2020-09-17 |
    | 7       | Bark      | NULL       |
    +---------+-----------+------------+

    2つのORを使用しても、同じ結果を得ることができます。 演算子:

    SELECT 
        PetId, 
        PetName, 
        DOB 
    FROM Pets
    WHERE PetName = 'Fluffy' 
        OR PetName = 'Bark' 
        OR PetName = 'Wag';

    ただし、IN 演算子はそれを行うためのより簡潔な方法です。 IN 演算子は、比較する値のリストが長い場合に特に役立ちます。

    IN ほとんどの場合、演算子は複数のORよりも高速に実行されます 演算子、特に大規模なデータセットの場合。

    数値

    値は文字列だけに限定されません。たとえば、INを使用できます 数値のリストにあります。

    SELECT 
        PetId, 
        PetName, 
        DOB 
    FROM Pets
    WHERE PetId IN (1, 3, 5);

    結果:

    +---------+-----------+------------+
    | PetId   | PetName   | DOB        |
    |---------+-----------+------------|
    | 1       | Fluffy    | 2020-11-20 |
    | 3       | Scratch   | 2018-10-01 |
    | 5       | Tweet     | 2020-11-28 |
    +---------+-----------+------------+

    日付

    日付のリストを使用する例を次に示します。

    SELECT 
        PetId, 
        PetName, 
        DOB 
    FROM Pets
    WHERE DOB IN (
        '2020-11-20', 
        '2018-10-01', 
        '2015-10-01'
        );

    結果:

    +---------+-----------+------------+
    | PetId   | PetName   | DOB        |
    |---------+-----------+------------|
    | 1       | Fluffy    | 2020-11-20 |
    | 3       | Scratch   | 2018-10-01 |
    +---------+-----------+------------+

    INの使用 サブクエリあり

    INのもう1つの利点 演算子は、別のSELECTを含めることができるということです リスト。これはサブクエリとして知られています 。サブクエリは、別のクエリ(または別のサブクエリ)内にネストされたクエリです。

    これが例です。

    SELECT 
        PetTypeId,
        PetType
    FROM PetTypes
    WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

    結果:

    +-------------+-----------+
    | PetTypeId   | PetType   |
    |-------------+-----------|
    | 1           | Bird      |
    | 2           | Cat       |
    | 3           | Dog       |
    +-------------+-----------+

    この例は、ペットホテルにペットの種類がいくつあるかを示しています。

    NOT INの使用

    NOTを追加できます これを裏返して、ペットの種類がいくつあるかを確認するオペレーター 私たちのペットホテルで。

    SELECT 
        PetTypeId,
        PetType
    FROM PetTypes
    WHERE PetTypeId NOT IN ( SELECT PetTypeId FROM Pets );

    結果:

    +-------------+-----------+
    | PetTypeId   | PetType   |
    |-------------+-----------|
    | 4           | Rabbit    |
    +-------------+-----------+

    この場合、データベースにはペットタイプのRabbitが含まれています 、しかし現在、ペットとしてのウサギはいない。

    表現

    提供される値は式のリストです。したがって、次のようなことができます:

    SELECT 
        PetId, 
        PetName, 
        DOB 
    FROM Pets
    WHERE PetId IN (1, 3, 2 + 3);

    結果:

    +---------+-----------+------------+
    | PetId   | PetName   | DOB        |
    |---------+-----------+------------|
    | 1       | Fluffy    | 2020-11-20 |
    | 3       | Scratch   | 2018-10-01 |
    | 5       | Tweet     | 2020-11-28 |
    +---------+-----------+------------+

    1. int delete(String table、String whereClause、String [] whereArgs)関数のString [] whereArgsの目的は何ですか?

    2. psql(PostgreSQL)でクエリを実行するときにNull値を表示する方法

    3. MariaDB JSON_COMPACT()の説明

    4. SQL Server(T-SQL)でサーバー名を返す2つの方法