問題タブ [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 投票する
2 に答える
39 参照

sql - テーブルの挿入または更新

ファイルに 100k の ID のリストがあります。これらの ID を反復処理したい:

ごとに、が表にあるidかどうかを確認します。id

  • updated_dateそうであれば、そのフラグを更新します
  • そうでない場合は、新しいレコードを追加します(id, updated_date)

MERGE節を調べて見つけました。欠点は、MERGEID がテーブルにある必要があることです。一時テーブルの作成は、必要な場合にのみ許可されています。

誰でも私を正しい方向に向けることができますか? コードではなく、データベースで実行できるスクリプトでなければなりません。

編集:一時テーブルが唯一のオプションである場合は、一時テーブルを使用できるようになりました。

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

sql - 列を指定しないOracle SQLマージ表

people100,000 レコード未満のテーブルがあり、次を使用してこのテーブルのバックアップを作成しました。

時間の経過とともにいくつかの新しいレコードをテーブルに追加peopleしましたが、最終的にはバックアップ テーブルのレコードを にマージしたいと考えていますpeople。残念ながらDROP、新しいレコードが失われるため、テーブルを単純化することはできません!

したがって、主キーに基づいてpeople、のレコードを使用してテーブル内のレコードを更新したいのですが、これを行う2つの方法が見つかりました。people_backupid

  1. テーブルをまとめてマージする
  2. ある種の派手な相関更新を使用する

すごい!ただし、これらの方法はどちらも使用SETし、更新する列を指定する必要があります。残念ながら、私は怠け者であり、の構造はpeople時間の経過とともに変化する可能性があり、CTASステートメントを更新する必要はありませんが、更新/マージ スクリプトを変更する必要があり、それは私にとって不必要な作業のように感じます。

列を指定せずに行全体をマージする方法はありますか? ここで、列を指定しないと、SQL で値を順番に挿入するように指示されることがわかります。ここでINSERT同じ方法を適用できますか?これは安全ですか?

注意: テーブルの構造はバックアップ間で変更されません

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

sql - Oracle マージ コマンド エラーでキーワードがありません

Oracleで2つのテーブルをマージしようとしていますが、使用しているクエリは

このクエリを実行するたびに、次のエラーが発生します。

ORA-00905 キーワードがありません。

誰でもこれで私を助けることができますか?

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

oracle - OracleのPL/SQLでrowtype変数を使用してMERGEしますか?

barタイプの変数を使用すると、 PL/SQL でfoo%ROWTYPE両方を実行できます。INSERTUPDATE

しかし、どうすればいいMERGEですか?次のアプローチでは、次のエラー メッセージが生成されます。

PL/SQL: ORA-00942: テーブルまたはビューが存在しません