2017-10-18 6 views
1

から選択 ''TableAの

select '' from TableA 

は正確に何をしますか?

私は与えられたテーブルの上にそれを実行すると、私は戻って別名が使用されていないため、明らかにのヘッダ「(ノー列名)」が空白になっているテーブル内のすべての行のレコードを取得します。 このクエリは、「存在しない」ステートメントのサブクエリとして使用されています。

このクエリはいつ何時に便利なのですか?この方法でクエリを実行するのは良い方法ですか?

たとえば、最初に見たときに空白の行が1つ返されると考えられましたが、実際にはテーブルのすべての行が返され、空白になります。

私は周りを見回し、これに対する答えを見つけていません。 ありがとう

+1

にあなたが持っているすべてのテーブルのクエリを作成し、自動的に作成されます。 – Lamak

+0

@Lamakありがとうございました、私はそれについてもクエリの実行計画をチェックしてみましたが、その場では見えますが、適切な権限はありません。 – DrHouseofSQL

+1

それだけですべてのレコードは、それがどんな結果を見つけた場合、次の部分に移動するので、あなたがいない、 'table'から1を選択すると同じ戻り、exists''でこれを使用すると、あなたのパフォーマンスを向上させることがあるかどうかのチェックを行っています本当に私は舞台裏で見てますがな権限を持っていない、あまりにもそれのためのクエリ実行プランをチェックしてみました – LONG

答えて

2

テーブルに何かが存在するかどうかを確認する際には、実際の列ではなく任意の値を選択するのが一般的です。実際の列に影響を与えるためです(実際の列を選択した場合、その列を考慮に入れると、列を使用しなくても少し時間がかかります)。

IF EXISTS (SELECT 1 FROM MyTable WHERE SomeColumn > 10) 

あなただけ任意の行、することができます短絡クエリではなく、すべての行を取得するがあるかどうかを気にしている場合...私はEXISTSの疑いがあるものの:最も一般的には、私は1を見てきました

とにかく行が見つかるとすぐに文は停止します。あなたは静的な値を追加したい場合は、例えば

何らかの理由であなたのクエリの一部として、この構文を使用し

IF EXISTS (SELECT TOP 1 '' FROM TableA) 
+0

おかげ@Fenton空白値を持つすべての行を返して、それを気にする必要があります – DrHouseofSQL

0

SELECT 
    'SELECT TOP 10 * FROM '+name 
from sys.objects 
where type = 'U' 

これはEXISTS` `において有用であるか、それだけでいくつかの条件を持つ行が存在することを確認したときに、`、EXISTS`することはできませんデータベース

関連する問題