問題タブ [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 がターゲット テーブルからの 2 つの同一行の挿入と更新に失敗する
以下のスクリプトで、SQL Merge を使用して 2 つのテーブルをマージしようとしています。
私がやろうとしているのは、 から に新しいレコードを挿入することです。"Target"
レコードはテーブルで更新されます。私が直面している問題は、ソース テーブルに 2 つの同一の. スクリプト ロジックと私の要件によると、最初の を挿入する必要があり、次に 2 番目の「一致しない」は挿入ではなく更新として処理する必要があります。最初の記録。"Source"
"Matched"
"Source"
"Not Matched Rows"
"Not Matched"
"Matched"
私のマージは、スクリプトが 2 番目の同一の行に到達したときに最初の挿入が認識されない 1 つの一括スクリプトとして機能しているようです。これは「SQL Merge」の仕組みですか、それとも私のスクリプトからですか?
ありがとう
h2 - H2 MERGE: 列が見つかりません
次の表があります。
次に、 を作成し、PreparedStatement
インデックス 1 の値を指定します。
H2 は次のエラーで失敗します。
version + 1
H2 が右側を好まないことは理解していますが、新しい行とversion + 1
既存の行に対して 0 を返す方法が明確ではありません。select
でステートメントを使用するよりも簡単な方法はありunion
ますか?
sql - Oracle MERGE ステートメントを PostgreSQL UPSERT ステートメントに移行する
次の Oracle ステートメントをPostgreSQL 9.3 データベースで使用できるMERGE
有効なステートメントに変換する方法を教えてください。UPSERT
sql - SQL Merge - どうすればこれを最適化できますか?
テーブル A (マージ先のテーブル) には 90,000 行あります テーブル B (ソース テーブル) には 3,677 行あります これは非常に迅速にマージされると予想されますが、30 分かかります (カウント中)。より高速に実行するにはどうすれば最適化できますか?
AS BEGIN -- 余分な結果セットを防ぐために追加された SET NOCOUNT ON -- SELECT ステートメントに干渉します。NOCOUNT をオンに設定します。
終わり
更新 わずか数秒で実行されるストアド プロシージャを改善することができました。bb02_fundraiser テーブルの代わりに一時テーブルに参加し、ON 句のサブクエリを削除しました。
Merge は不要であり、代わりに Update を使用することもできたことがわかりましたが、リファクタリングですぐに INSERT が必要になる可能性があるため、これで問題ありません。
OBJECT_ID('tempdb..# fids ') IS NOT NULL DROP TABLE #fids の場合、以下の更新されたストアド プロシージャ
sql - 一時テーブルから列を挿入し、ストアドプロシージャからパラメータをマージする方法は?
これはそれを行う「正しい」方法ですか?
別の方法またはより良い方法はありますか?
jdbc - DB2 jdbc ドライバーは MERGE に対応していませんか?
DB2 コントロール センターで正常に実行できる非常に単純な MERGE ステートメントを作成しましたが、JDBC 経由で実行しようとすると、ドライバーが機能していないと表示されます。これは本当にそうですか?
sql-server - SQL Server マージ レプリケーション: 親が使用可能になる前に、1 対多の関係にあるすべての子が同期されていることを確認します。
私はこの問題を抱えています:それらの間に1対多の関係がある2つのテーブル。それらが SQL Server の異なるインスタンス間で同期される場合、すべての子に FK があり、その存在に依存しているため、親が最初に移動し、その後に子が続きます (大きなペイロードがあり、同期に時間がかかる場合があります)。
問題は、レコードがスケジュールされたジョブで処理され、レコードが来ると自動的に処理されることです。一部の子がそこにない場合は失敗するか、さらに悪いことに、場合によっては欠落した子が追加されるため、重複が発生します。私はレプリケーションの専門家ではないので、保留中のすべての子レコードも同期されるまで親レコードが使用できないことをマージ レプリケーションで保証できるかどうかを知りたいですか? ある種のトランザクションを使用するか、同期が完了したときに更新される親レコードにフラグを追加して、処理の準備ができていることを確認できるようにすることが可能である場合、答えはリソースへのポインターにすぎません。その機能が呼び出され、そこで構成するためにレプリケーション チームに依頼する必要があるもの。
それ以外の場合、それが不可能であると確信しており、他の方法で自分で処理する必要がある場合は、どの道を進むべきかを見つけるのに役立つので、価値があります。
ありがとう!
sql - マージによりキャスト エラーが発生する DATETIME --> INT
このエラーが発生する理由がわかりません。他の誰かがエラーを見つけるのを手伝ってくれますか? 一時テーブルにマージしようとしていますが、エラーが発生します
データ型 datetime から int への暗黙的な変換は許可されていません。CONVERT 関数を使用して、このクエリを実行します。エラーは、MERGE が開始する行で発生していると識別されます。
クエリ: