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

SQL:ANY / SOMEおよびALLキーワードが必要ですか?

    平等や不平等をテストするだけではない場合、ANYとALLが非常に役立つと思います。検討する

    'blah' LIKE ANY (ARRAY['%lah', '%fah', '%dah']);
    

    この質問に対する私の回答を使用 。

    ANYALL そして、それらの否定は、さもなければ重要なサブクエリまたはCTEを必要とするコードを大幅に単純化することができ、私の見解ではそれらは大幅に十分に活用されていません。

    ANY どのオペレーターでも動作します。 LIKEと非常に便利です および~ 、ただし、tsquery、配列メンバーシップテスト、hstoreキーテストなどで機能します。

    'a => 1, e => 2'::hstore ? ANY (ARRAY['a', 'b', 'c', 'd'])
    

    または:

    'a => 1, b => 2'::hstore ? ALL (ARRAY['a', 'b'])
    

    ANYなし またはALL おそらく、VALUESを介してサブクエリまたはCTEとしてそれらを表現する必要があります。 単一の結果を生成するための集計を含むリスト。もちろん、必要に応じてそれを行うこともできますが、私はANYに固執します 。

    ここに1つの本当の注意点があります:古いPgバージョンでは、ANY( SELECT ... )を書いている場合 、EXISTS (SELECT 1 FROM ... WHERE ...)を使用すると、パフォーマンスの面でほぼ確実に改善されます。 。オプティマイザーがANY (...)をオンにするバージョンを使用している場合 参加するなら、心配する必要はありません。疑わしい場合は、EXPLAINを確認してください 出力。



    1. 単一のMySQLデータベースへのリモートアクセスを許可する方法

    2. 「SQLServerがコンポーネント「アドホック分散クエリ」のステートメント「OpenRowset/OpenDatasource」へのアクセスをブロックした」を修正

    3. ウィンドウ関数-リセット付きの現在の合計

    4. 自動インクリメントのギャップを削除します