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

単純なOracleselectステートメントの構文

    SELECT name
    FROM   FRUIT
    WHERE  color IN ( 'Red', 'Green' )
    GROUP BY name
    HAVING COUNT( DISTINCT color ) = 2;
    

    コレクションを使用して同じことを行うこともできます:

    CREATE FruitColorTableType AS TABLE OF FRUIT.COLOR%TYPE;
    /
    
    SELECT DISTINCT
           Name
    FROM   FRUIT f
    WHERE  FruitColorTableType( 'Red', 'Green' )
           SUBMULTISET OF
           CAST( MULTISET(
             SELECT Color
             FROM   FRUIT c
             WHERE  c.name = f.name
           ) AS FruitColorTableType );
    

    または:

    SELECT name
    FROM   FRUIT
    WHERE  color MEMBER OF FruitColorTableType( 'Red', 'Green' )
    GROUP BY name
    HAVING COUNT( DISTINCT color ) = 2;
    

    また、関数/プロシージャとして書き直す場合は、コレクションを引数として渡し、CARDINALITY()を使用できます。 コレクションのサイズをハードコーディングするのではなく、機能します。

    (これらの最後の2つのクエリはテストされていないため、タイプミスがある可能性があります)



    1. CでのSQLインジェクションの防止

    2. AlwaysOn可用性グループの構成-パート2

    3. 特定の値が複数の行で発生する回数をカウントするSQLクエリ

    4. Rails3SQLクエリは結合を使用して選択します