-1

選択クエリから一時テーブルを作成したい (テーブルには多くの列があるため、一時テーブルを手動で作成したくない) 次のクエリを使用します。

SELECT * INTO #TempTable
FROM MyTable
WHERE ...

このクエリが空の行を返す場合、作成されません#TempTable。したがって、これ#TempTableを次のクエリに使用することはできません。

これを解決する方法はありますか?

4

3 に答える 3

1

SELECT * FROM MyTable WHERE ...投稿したコード内のクエリが次の場合:

 SELECT * 
 INTO TempTable 
 FROM MyTable WHERE ...

行が返されない場合、空の作成されますが、句TempTableに一致する行がない場合、データは入力されません。ただし、少なくとも同じ構造WHEREのテーブルを作成する必要があり、空になります。TempTableMyTable

たとえば、次のようになります。

SELECT * INTO TempTable FROM MyTable WHERE 1 <> 1;

述語が常に false であるため、常にTempTable同じ構造の空のテーブルを作成します。MyTable1 <> 1

ただし、次のように宣言できます。

DECLARE @Temp TABLE(Field1 int, ...);
于 2012-10-19T02:39:08.667 に答える
0

これは、一時テーブルを動的に作成および設定していて、明示的に作成していないためです。このようなシナリオでは、一時テーブルを作成する前に、最初にその存在を確認する必要があります。

これを試して:

IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL
BEGIN
    DROP TABLE #TempTable
END

SELECT * INTO #TempTable FROM MyTable 
Select * From #TempTable
于 2012-10-19T02:43:55.590 に答える
0

あなたの質問

SELECT * INTO #TempTable
FROM MyTable
WHERE ...

選択が行を返さない場合、空のテーブルを作成します

于 2012-10-19T02:45:25.480 に答える