1

以下のようなストアドプロシージャを書きたい

allInterestingKeys = SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date)
DELETE MyTable01 WHERE MyKey IN allInterestingKeys
DELETE MyTable02 WHERE MyKey IN allInterestingKeys 
...
DELETE MyTable10 WHERE MyKey IN allInterestingKeys 

SELECT MyKey FROM MyTable WHERE ...理想的には、手順をより効率的で読みやすいものにするために、一度だけ実行したい

DELETE MyTable01 WHERE MyKey IN (SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date))
DELETE MyTable02 WHERE MyKey IN (SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date))
...
DELETE MyTable10 WHERE MyKey IN (SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date))

それをコーディングする最良の方法は何ですか?ありがとう。

4

1 に答える 1

2

一時テーブルを使用してください!が最も簡単ですが、事前にテーブルと一時テーブルSELECT INTOを設計することもできますINSERT INTO

SELECT MyKey 
INTO #allInterestingKeys
FROM MyTable 
WHERE CreatedDate < CAST('2013-01-01' AS date)

次に、一時テーブルからリストを選択します

DELETE MyTable01 WHERE MyKey IN (SELECT MyKey FROM #allInterestingKeys)

またはINNER JOIN削除する一時テーブルに

DELETE t
FROM MyTable01 t
INNER JOIN #allInterestingKeys k
  ON t.MyKey = k.MyKey
于 2013-01-29T16:38:13.167 に答える