MERGEステートメントの例が必要な場合は、リンクをたどってください。これは、Vertica のドキュメントへのリンクです。明確に指示に従うことを忘れないでください。WHEN NOT MATCHED
続いて andを使用して Merge を作成することはできませんWHEN MATCHED
。ドキュメントの使用方法の説明に示されている順序に従う必要があります (これは逆です)。ただし、1 つを完全に省略することもできます。
Vertica では、更新または削除されたデータが実際にはテーブルから削除されず、「削除済み」としてマークされるだけであるという事実を認識している場合、わかりません。この種のデータは、 SELECT PURGE_TABLE('schemaName.tableName');を実行して手動で削除できます。
そのスキーマでこれを行うには、スーパー ユーザー権限が必要になる場合があります。詳細については、Vertica のドキュメントを参照してください。データをパージします。Vertica の Web サイトからのこの例: MERGE を使用した更新と挿入の同時実行
Merge が Vertica バージョン 6.0 でサポートされていることに同意します。ただし、Vertica の AHM またはエポック管理設定が大量の履歴 (削除済み) データを保存するように設定されている場合、更新が遅くなります。更新速度は、悪いものから、さらに悪いもの、恐ろしいものへと変化する可能性があります。
削除された(古い)データを取り除くために私が通常行うことは、テーブルを更新した後にテーブルでパージを実行することです。これにより、更新速度を維持することができました。Merge は、確実に更新を実行する必要がある場合に役立ちます。特に、何百万もの行を更新する可能性のある毎日の増分更新。
あなたの答えにたどり着く: Vertica は Merge で Subquery をサポートしていないと思います。次のようになります。
ERROR 0: Subquery in MERGE is not supported
同様のユースケースがあったとき、サブクエリを使用してビューを作成し、新しく作成したビューをソース テーブルとして使用して宛先テーブルにマージしました。これにより、Vertica で MERGE 操作を使用し続けることができ、通常の PURGE により更新を高速に保つことができます。
実際、マージは、理想的には主キーの結合である必要がある ON 句でフィールドの正しい組み合わせを使用する場合、挿入または更新中の重複エントリを回避するのにも役立ちます。