問題タブ [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 - テーブルの挿入または更新
ファイルに 100k の ID のリストがあります。これらの ID を反復処理したい:
ごとに、が表にあるid
かどうかを確認します。id
updated_date
そうであれば、そのフラグを更新します- そうでない場合は、新しいレコードを追加します
(id, updated_date)
MERGE
節を調べて見つけました。欠点は、MERGE
ID がテーブルにある必要があることです。一時テーブルの作成は、必要な場合にのみ許可されています。
誰でも私を正しい方向に向けることができますか? コードではなく、データベースで実行できるスクリプトでなければなりません。
編集:一時テーブルが唯一のオプションである場合は、一時テーブルを使用できるようになりました。
sql - 列を指定しないOracle SQLマージ表
people
100,000 レコード未満のテーブルがあり、次を使用してこのテーブルのバックアップを作成しました。
時間の経過とともにいくつかの新しいレコードをテーブルに追加people
しましたが、最終的にはバックアップ テーブルのレコードを にマージしたいと考えていますpeople
。残念ながらDROP
、新しいレコードが失われるため、テーブルを単純化することはできません!
したがって、主キーに基づいてpeople
、のレコードを使用してテーブル内のレコードを更新したいのですが、これを行う2つの方法が見つかりました。people_backup
id
- テーブルをまとめてマージする
- ある種の派手な相関更新を使用する
すごい!ただし、これらの方法はどちらも使用SET
し、更新する列を指定する必要があります。残念ながら、私は怠け者であり、の構造はpeople
時間の経過とともに変化する可能性があり、CTAS
ステートメントを更新する必要はありませんが、更新/マージ スクリプトを変更する必要があり、それは私にとって不必要な作業のように感じます。
列を指定せずに行全体をマージする方法はありますか? ここで、列を指定しないと、SQL で値を順番に挿入するように指示されることがわかります。ここでINSERT
同じ方法を適用できますか?これは安全ですか?
注意: テーブルの構造はバックアップ間で変更されません
sql - Oracle マージ コマンド エラーでキーワードがありません
Oracleで2つのテーブルをマージしようとしていますが、使用しているクエリは
このクエリを実行するたびに、次のエラーが発生します。
ORA-00905 キーワードがありません。
誰でもこれで私を助けることができますか?
oracle - OracleのPL/SQLでrowtype変数を使用してMERGEしますか?
bar
タイプの変数を使用すると、 PL/SQL でfoo%ROWTYPE
両方を実行できます。INSERT
UPDATE
しかし、どうすればいいMERGE
ですか?次のアプローチでは、次のエラー メッセージが生成されます。
PL/SQL: ORA-00942: テーブルまたはビューが存在しません