[解決済み] INSERT INTOとWITH/CTEを組み合わせる
2022-04-17 07:10:27
質問
非常に複雑なCTEがあり、その結果を物理テーブルに挿入したいのですが、どうすればよいですか?
以下は有効ですか?
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos
(
BatchID,
AccountNo,
APartyNo,
SourceRowID
)
WITH tab (
-- some query
)
SELECT * FROM tab
このCTEを作成するために、再利用を可能にする関数を使用しようと考えています。何かご意見はありますか?
どのように解決するのですか?
CTEを先に記述し、INSERT INTOをselect文と組み合わせる必要があります。また、CTE名の後に続く"AS"キーワードはオプションではありません。
WITH tab AS (
bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos (
BatchID,
AccountNo,
APartyNo,
SourceRowID
)
SELECT * FROM tab
このコードは、CTEがちょうど4つのフィールドを返し、それらのフィールドがINSERT文に指定されたものと順序と型が一致することを想定していることに注意してください。 そうでない場合は、"SELECT *"を、必要なフィールドの特定の選択に置き換えるだけです。
関数の使用に関するご質問ですが、「場合による」とお答えします。 もし、パフォーマンス上の理由からテーブルにデータを置くのであれば、関数を通して使っても速度に問題がないのであれば、関数を選択肢に入れるといいと思います。 一方、CTEの結果を複数の異なるクエリで使用する必要があり、速度がすでに問題になっている場合は、テーブル(通常のテーブル、またはtempテーブル)を使用します。
関連
-
[解決済み] JavaScriptでライブラリを使わずに、他の要素の後に要素を挿入するにはどうしたらいいですか?
-
[解決済み] "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
-
[解決済み] INSERT INTO ...」の部分を繰り返さずに複数行の挿入を行うには?
-
[解決済み] T-SQLです。結合で削除する行を選択する
-
[解決済み] T-SQLでテーブル変数をSELECT INTOする
-
[解決済み】SQL Server SELECT INTO @variable?
-
[解決済み】T-SQLのCASE句。WHEN NULLを指定する方法
-
[解決済み] T-SQLストアドプロシージャでオプションのパラメータを使用するにはどうすればよいですか?
-
[解決済み] T-SQL - デフォルトのパラメータを持つ関数
-
[解決済み] バッチ」とは何か、なぜ「GO」が使われるのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLで2つの値の最小値を取得する
-
[解決済み] T-SQL CASE句。WHEN NULLの指定方法
-
[解決済み] TSQLで改行文字を置換する
-
[解決済み】T-SQLのCASE句。WHEN NULLを指定する方法
-
[解決済み】SELECT * INTO tempTable FROM CTE クエリでテンポラリテーブルを作成する方法
-
[解決済み] T-SQLストアドプロシージャでオプションのパラメータを使用するにはどうすればよいですか?
-
[解決済み] sp_executesqlの結果を変数に取得する方法は?
-
[解決済み] INSERT INTOとWITH/CTEを組み合わせる
-
[解決済み] T-SQL - デフォルトのパラメータを持つ関数
-
[解決済み] バッチ」とは何か、なぜ「GO」が使われるのか?