問題タブ [sql-merge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
129 参照

sql-server-2008 - update t-sql 内に insert t-sql を入れ子にすることはできますか?

更新ステートメント内に挿入ステートメントをネストすることは可能ですか?

背景:

mergeこの句を初めて使用して、一部のデータを変換しています。つまり、多くの列を持つ単一のソース テーブルがありますが、より適切な言葉がない場合は、より構造化されたモデル/スキーマに変換する必要があります。モデルのそれに似ていBIます。また、BI モデリングの経験もありません (読み始めてから 1 か月も経っていません)。どんな助けでも大歓迎です。

支援に必要なその他の情報があれば喜んで提供します。

エラー:

メッセージ 156、レベル 15、状態 1、行 47
キーワード「select」付近の構文が正しくありません。

メッセージ 102、レベル 15、状態 1、行 48
')' 付近の構文が正しくありません。

これらは、tertiary.WEBADDRESS行に挿入しようとした時点でスローされます。

コード:

0 投票する
1 に答える
70 参照

sql - マージによる更新

プロシージャの作成中に設計上の問題が発生しました。

同じ行の他の列のデータを使用して、テーブルのすべての行を更新する必要があるとします。table13 つの列がAありBCすべての行を として更新する必要があるとしますC=A+B。だから私は使用することができます:

しかし、私は以下のようなものを使用してこれを行う必要があります:

「クエリ」と「条件」を操作してこれを行う方法はありますか?

0 投票する
2 に答える
1786 参照

sql - ルックアップ テーブルの値を使用して列を更新する

テーブル製品に製品のリストがあります。これには、500 万を超えるレコードが含まれる場合があります。

prod_code と prod_region は null 許容ではありません。

別のルックアップ テーブル product_type から選択して、このテーブルの prod_type を更新する必要があります。

このテーブルでは、prod_region は null にすることができます。null の場合は Anything と解釈する必要があります。

したがって、更新された製品テーブルは次のようになります。

目的の出力の説明。

  1. prod_code = 1001 の場合、product_type に 2 つの整数があります。特定の prod_region 'R1' の場合は prod_type = 3、残りの地域の場合は prod_type = 1 です。したがって、products の最初の 2 つのレコードは、それぞれ 1 と 3 を取得する必要があります。
  2. prod_code 1002、1003 の場合、product_type テーブルに prod_region が指定されていません。したがって、prod_region に関係なく、3 番目と 4 番目のレコードには prod_type = 2 が割り当てられます。

次のマージ ステートメントはORA-30926: unable to get a stable set of rows in the source tables、Oracle またはFailure 7547 Target row updated by multiple source rows.Teradata が原因で失敗します。

標準 SQL または Teradata 固有の回答を探しています。

0 投票する
1 に答える
1122 参照

sql - ページング 一括データをテーブルに挿入する

ばかげた質問かもしれませんが、挿入を分割/ページングして、他の操作が同じテーブルを更新できるようにする方法です。

2 つのストアド プロシージャがあり、1 つはバルク データを挿入します

ストアド プロシージャInsertIntoMyTable:

の主キーMyTable(Column1, Column2)

またMERGE、同じテーブルに対する操作もありますMyTableが、別のソースから、主に更新 (列 3) だけでなく、データを に挿入することもできますMyTable

問題は、1,000 万レコードの挿入にMyTable時間がかかる場合、実行するストアド プロシージャが終了MERGEするまで待たなければならないことInsertIntoMyTableです。

これを解決しようとすると、ページ分割された

ただし、操作が終了するまでテーブルは引き続きロックされます。

注: 実行はトランザクションではありません。

0 投票する
2 に答える
69 参照

sql - テーブルを結合して結果を取得する

これは、更新する必要があるテーブルです。

更新されたユーザーの新しい値を含む一時テーブルがあります。

TEMP TABLE の新しい値を反映するように TABLE A を更新する方法を知りたいです。期待される結果は次のようになります。

私が持っている2つのアイデアは次のとおりです。

  • 削除してから挿入します。左結合を使用して存在しなくなった値を特定し、それらを削除します。次に、右結合を使用して新しい値を決定し、それらを挿入します。
  • MERGEを使用できるかもしれませんが、実装方法はよくわかります。

テスト環境

編集:次のソリューションは、テーブル A から ID (1,2,3,4) を削除しますが、(2,3,4) だけを削除したいです。これは、ID 1 が既に TABLE A に存在し、削除して再度挿入する必要がないためです。

解決策はありますが、かなり面倒です。それを改善する方法はありますか?