問題タブ [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.
sql - SQL での MERGE の使用
同じテーブル構造を持つT1、T2の2つのテーブルがあります。T2にまだ存在しない場合はT1からT2に新しい行を挿入し、T2の既存のデータを主キーで更新したい場合があります。MERGEを使用して、このためのSQLを手伝ってもらえますか。
ティア
mysql - 複製せずに 2 つのテーブルをマージする
重複することなく、2 つのユーザー テーブルを 1 つにマージする必要があります。
例:私のデータベースにはテーブルen_userとkn_userがあり、両方に存在するユーザーはほとんどいないため、クエリを実行してkn_userとen_userをマージすると、kn_userに存在する一意のユーザーをen_userにコピーする必要がありますが、両方に存在するユーザーはコピーしないでください合併する。
私のテーブルをよりよく理解するために
en_users テーブル
kn_user テーブル
したがって、kn_users と en_users をマージする場合、この出力が必要です
en_users テーブル
oracle - Oracle: 無効な識別子
私はオラクルで次のクエリを使用しています。ただし、5行目の「c.par」は無効なパラメーターであるというエラーが表示されます。理由はわかりません。列が存在します。私がチェックしました。私は長い間これに苦労してきました。私がしたいのは、あるテーブルを別のテーブルにマージし、oracle を使用して更新することだけです。誰か助けてくれませんか?
sql-server - TSQL-Merge で条件が一致した場合の更新と挿入
次の条件で Merge を使用して UpSert を実行できるストアド プロシージャを作成しようとしています。
Record が Present の場合、Target の EndDate を昨日の日に変更します。つまり、現在の日 - 1
レコードが存在しない場合、新しいレコードを挿入
SPで使用したテーブルtblEmployeeは次のとおりです
UDTT を入力パラメーターとして使用する SP を次に示します。
列が一致したときに既存のレコードの更新と新しいレコードの追加の両方を実行するにはどうすればよいですか
TSQLでのマージの実行フローを誰かに説明してもらえますか?
上記の 3 つの条件はすべて Merge で毎回実行されますか、それとも一致する条件のみが毎回実行されますか
前もって感謝します
sql - SQL マージでは、「一致しない場合」と「一致しない場合」の動作はどうなるでしょうか` 失敗
次のことを考慮してくださいmerge
。
これはそれほど難しいクエリではありませんが、 と について明確にする必要がありwhen matched and <condition>
ますwhen not matched
。
たとえば、ソース テーブルには次のようなレコードがあります。
ターゲット テーブルに非常によく似たレコードが 1 つあるとします。
マージステートメントが実行されると、それらは一致します ( tgt.id = src.id
) が、条件に失敗しand
ます ( ('sha1', isnull(tgt.field, '')) != hash('sha1', isnull(src.field, ''))
.
この例で実際に失敗したのはand
条件であり、一致自体ではありません。この場合、挿入はnot matched by target
実行されますか?
sql-server - MERGE を使用してデータを削除または挿入する
UI から、データテーブルをストアド プロシージャに渡します。そのパラメーターのタイプは、次の構造を持つユーザー定義のテーブル フィールドです。
このデータはテーブルに入れる必要があり、テーブルに存在するがデータテーブルにないデータは削除する必要があります。
テーブルデータの例
そして、私のデータテーブルには2つの行があり、1つの一致する行と1つの新しい行があります
データテーブル データの例
その結果、456/B9 行を削除し、123/A1 行には何も起こらず、786/Z6 行を挿入する必要があります。
MERGE ステートメントを使用できると思いますが、その作成方法がわかりません。
WHEN NOT MATCHED 挿入を行う必要があることは理解していますが、削除部分はどこに入るのですか?
編集:明確にするために、データテーブルには同じ人物キーの多くの行が含まれる可能性がありますが、コンポーネントキーは異なります。
データテーブル データの例
テーブルデータの例
上記のデータテーブルを挿入した後の結果は
123/A1 が削除され、456/B9 がまだ表にあることに注意してください。
sql - ターゲットと一致しない SQL マージとソースと一致しない SQL マージ
と はどう違いますNOT MATCHED BY SOURCE
かNOT MATCHED BY TARGET
?
例えば:
WHEN NOT MATCHED BY SOURCE
レコードはターゲットには存在するが、ソースには存在しないということですか? - それで、それらを削除できますか?
およびWHEN NOT MATCHED BY TARGET
- レコードがソースには存在するが、ターゲットには存在しないことを意味しますか? 挿入できますか?