ORA-30926: ソース・テーブルの安定した行のセットを取得できませんか?
2022-02-13 02:36:08
<スパン 取得元:http://blog.itpub.net/29900383/viewspace-1284128/
<スパン みんなに見てもらうために。 http://blog.sina.com.cn/s/blog_5d25646e0100qu17.html的内容、追加します。
test_source と test_target の2つのテーブルを新規に作成し、そのデータは以下のようになります。 <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパン <スパンSQL> select * from test_source;
ネームID
<スパン ---------- ----------
<スパン P3 74834
<スパン P4 74835
<スパン ルオエイト
<スパン P1 74832
<スパン P2 74833
ジーエイト
<スパン SQL> select name ,id from test_target;
ネームID
<スパン ---------- ----------
<スパン P3*** 74834
<スパン P4*** 74835
ルオ** 8
<スパン P1*** 74832
<スパン P2*** 74833
zhi** 8
SQL> test_target にマージする。
2 test_sourceを使用する
3 on (test_source.id = test_target.id)
4 マッチしたら更新 set test_target.name = test_source.name
5 一致しない場合、insert values(test_source.name,test_source.id) を挿入する。
test_sourceを使用する
*
2行目でエラーになりました。
ORA-30926: ソース・テーブルの安定した行のセットを取得できません。
---------------------- ははは、エラーが報告されました、なぜか考えてみてください。-----------------------------
---------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------
解答は以下の通りです。
まず、存在にマージするポイントが何であるかを知る必要があります!!!
使用方法 にマージする。 は、on(条件)にマッチした条件に基づいて、table_target のデータを table_source のデータに更新してマージすることである。
merge intoの内部処理として テーブル_ソース table_sourceのマッチングカラムに重複する値がある場合、重複するカラムの値を2回目にマッチングすると、最初の更新後の値が再度更新されることになる。 つまり、table_sourceのレコードはマージ後のtable_targetで失われることになる もしレコードが失われるなら、2つのテーブルをマージする意味はあるのだろうか?したがって、我々はに注意を払うためにマージ使用:ソーステーブルのマッチング列は、重複する値を持つことはできません、それ以外の場合は、(エラー!)一致することはできません。
------------------------------------------------------------------------------ 上記の重複したカラムの値を削除してみます。
SQL> delete from test_source where name = 'zhi';
1行削除しました。
SQL> merge into test_target
2 test_sourceを使用する
3 on (test_source.id = test_target.id)
4 マッチしたら更新 set test_target.name = test_source.name
5 一致しない場合、insert values(test_source.name,test_source.id) を挿入する。
6 行がマージされます。
--------------- 今回のHOマージは成功しました。
関連
-
ERROR 1046 (3D000)の解決策です。MySQLでアカウント削除時にデータベースが選択されない問題
-
INSERT EXEC文は入れ子にできません。
-
SQL SERVER データベース SELECT INTO および INSERT INTO の使用法(テンポラリテーブルへのデータ挿入を含む)
-
Postgresql でテーブル "t" の FROM 句の項目が見つからない。
-
[Mac] sudo mongod コマンド、プロンプトコマンドが見つかりません。
-
MongoDBコマンド
-
ORA-06550 "の解決策。1 行目、7 列目"
-
アプリケーションから DB2 SQL Error が報告され続けます。SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.17.29
-
PDOデータベース接続エラー。SQLSTATE[HY000] [2002] そのようなファイルやディレクトリはありません。
-
Linuxでmysql-5.7.30をインストールするための詳細な手順
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MYSQL "Access denied; you need (at least one of) SUPER privilege(s) for this operation" 問題解決
-
MySQL - エラーです。executeQuery() でデータ操作ステートメントを発行できません。
-
2021MySql-8.0.26インストール詳細チュートリアル(ベビーシッターレベル)
-
unixODBC:データソース名が見つからない、デフォルトドライバが指定されていないに関する質問
-
Hibernateでhibernate.propertiesが見つからない問題とデータベース方言の更新の問題
-
EF Exception Inquiry (エンティティオブジェクトは、IEntityChangeTrackerの複数のインスタンスから参照できません。)...
-
ORA-65096 無効な共通ユーザー名またはロール名
-
MySqlエラー解析'where節'の未知の列'xxx'
-
AttributeError: 'function' オブジェクトには 'cursor' という属性がありません。
-
mysql: この操作には (少なくとも 1 つの) RELOAD 権限が必要です。