it-swarm.asia

كيفية تحديث جدول من جدول آخر

لدي جدول A يحتوي على عمود (id ، field_1 ، field_2) ، وجدول B آخر به عمود (id ، field_2)

الآن أريد دمج الجدول B إلى A ، وهذا يعني أنني أريد تحديث field_2 في الجدول A إلى قيمة الجدول B. فكيف يتم تنفيذ ذلك؟ BTW أستخدم Oracle

شكر

29
zjffdu

من الطرق البديلة للاستعلام الفرعي المرتبط (الذي اقترحته كيري) استخدام عبارة MERGE ، والتي قد تكون أكثر كفاءة من الاختيار الفرعي (الذي لا يمكن التحقق منه إلا من خلال النظر في خطة تنفيذ كلا البيانين).

MERGE INTO table_b 
USING 
(
  SELECT id,
         field_2
  FROM table_a
) ta ON (ta.id = table_b.id)
WHEN MATCHED THEN UPDATE 
    SET table_b.field_2 = ta.field_2
30
a_horse_with_no_name

ليس بالضبط متأكد من ما تبحث عنه في هذا ، ولكن يجب أن يعمل هذا لمرة واحدة ، أو مستمر عبر مهمة مجدولة:

UPDATE table_a a
   SET field_2 = ( SELECT field_2
                     FROM table_b b
                    WHERE b.id = a.id )
;

الآن ، في كل مرة يتم تنفيذ ما سبق ، سيتم تنفيذه عبر جميع الصفوف في الجدول. إذا كان هذا شيء تحتاج إلى القيام به طوال الوقت ، أود أن أقترح شيئًا آخر ، ولكن بالنسبة لجداول لمرة واحدة أو صغيرة جدًا ، يجب أن يكون كافيًا.

15
Kerri Shotts

لقد قمت بذلك بنجاح باستخدام جدول واحد في user1 من جدول آخر في user2:

update user1.table1 a
set a.field1 = (
  select b.field1
  from user2.table2 b
  where a.field1=b.field1
)
where <condition for update user1.table1>
2
Siddik

يمكنك إنشاء مشغل على tableB يقوم بتحديث tableA في كل مرة يتم فيها تحديث field_2 على tableB. تحقق هنا لمزيد من المعلومات حول إنشاء المشغلات - http://download.Oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ

1
SqlSandwiches