テーブル(t2)から値を取得して、キー値が(abc)のときにテーブルのキー(t1)を更新しようとしています。私が私が最初にROWNUMせずにしようと、それはあまりにも多くの行が返さ言っOracleの別のテーブルからテーブルのキーを更新する
update table_a t1
set t1.u_key = (select t2.u_key
from table_b t2
where t2.name_f=t1.name_f
and t2.name_l=t1.name_l
and rownum<=1
and t2='NEVADA')
where t1.u_key = 'abc'
and e.name_f='Lori'
and e.name_l='U'
;
特定の人にそれを制限していたときに期待どおりに動作している
。
すべてのデータをt1.u_key = 'abc'で実行して特定の名前を取り出した場合、タイムアウトするまで実行していました。
update table_a t1
set t1.u_key = (select t2.u_key
from table_b t2
where t2.name_f=t1.name_f
and t2.name_l=t1.name_l
and rownum<=1
and t2='NEVADA')
where t1.u_key = 'abc'
;
あなたはそれを見て、何が欠けているのかを教えてください。
ROWNUM <= 1は少し任意のようだ...あなたは(更新)を返すようにしたいどのレコードを決定するために使用することができます定義されたタイブレーカーがありません複数ある? – Hambone
あなたはおそらく、同じ 'first_name'と' last_name'を持つ2人の人を持っています。私の場合、私のお父さんJuan Oropezaと同じ名前を持っています。彼は自分のカードID「ビッグプラス」を使って私からメールパッケージを取り戻すことさえできます。ダウンサイズは、お母さんが電話をかけるとき、またはお父さんや息子。 –
ありがとう@Hambone、私はデータの専門家と確認し、彼らは私が1対1に一致することができる別のフィールドを使用できることを示唆した。 –