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

Exists1またはExists*を使用したサブクエリ

    いいえ、SQL Serverはスマートであり、EXISTSに使用されていることを認識しており、システムにNODATAを返します。

    Quoth Microsoft:http://technet.microsoft.com/en-us/library/ms189259.aspx?ppud=4

    EXISTSによって導入されたサブクエリの選択リストは、ほとんどの場合、アスタリスク(*)で構成されます。サブクエリで指定された条件を満たす行が存在するかどうかをテストしているだけなので、列名をリストする理由はありません。

    自分自身を確認するには、次のコマンドを実行してみてください:

    SELECT whatever
      FROM yourtable
     WHERE EXISTS( SELECT 1/0
                     FROM someothertable 
                    WHERE a_valid_clause )
    

    それが実際にSELECTリストで何かをしている場合、それはゼロによるdivエラーをスローします。そうではありません。

    編集:注意:SQL標準は実際にこれについて話します。

    ANSI SQL 1992標準、191ページhttp://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

    3)ケース:
    a)<select list>の場合 「*」は単に<subquery>に含まれています それはすぐに<exists predicate>に含まれます 、次に<select list> <value expression>と同等です これは任意の<literal>



    1. MariaDBで値に少なくとも1桁の数字が含まれているかどうかを検出する方法

    2. SQLServerでスキーマバインドビューを作成する

    3. OracleにGUIDを保存するにはどうすればよいですか?

    4. AWSRDSで一般ログとエラーログを有効にする方法