نسخ البيانات بين الصفوف في جدول
في إدارة قاعدة البيانات، غالبًا ما يكون من الضروري تحديث الصفوف بناءً على بيانات من صفوف أخرى داخل نفس الجدول. خذ بعين الاعتبار جدولًا يحتوي على أعمدة ID وNAME وVALUE يحتوي على قيم NAME مكررة، كما يلي:ID | الاسم | القيمة | ---------------------------- 1 | اختبار | القيمة 1 | 2 | اختبار 2 | القيمة 2 | 1 | اختبار 2 | | 4 | اختبار | | 1 | اختبار 3 | VALUE3 |ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | | 4 | Test | | 1 | Test3 | VALUE3 |لنفترض أننا نريد تحديث حقول VALUE الفارغة في الصفوف ذات قيم NAME المكررة. ولتحقيق ذلك، يمكننا استخدام استعلامات SQL التي تشير إلى القيم وتحديثها داخل نفس الجدول.
يتضمن أحد الأساليب استخدام عبارة UPDATE مع صلة. في الاستعلام التالي، ننضم إلى data_table مرتين، ونسميهما بـ dt1 وdt2:تحديث data_table dt1, data_table dt2 تعيين dt1.VALUE = dt2.VALUE حيث dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | | 4 | Test | | 1 | Test3 | VALUE3 |يقوم هذا الاستعلام بتعريف وتحديث حقول VALUE الفارغة (حيث يكون dt1.VALUE فارغًا) مع الحقول غير الفارغة VALUEs من صفوف أخرى بنفس الاسم (حيث dt2.VALUE ليست فارغة).كبديل، يمكننا استخدام استعلام فرعي لتحديد الصفوف ذات القيم غير الفارغة وربطها مرة أخرى بالجدول الأصلي للتحديث:
تحديث data_table t، (SELECT DISTINCT ID، NAME، VALUE) من data_table حيث القيمة ليست فارغة وVALUE != '') t1 تعيين t.VALUE = t1.VALUE حيث t.ID = t1.ID AND t.NAME = t1.NAME
ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | | 4 | Test | | 1 | Test3 | VALUE3 |سيؤدي كل من هذين الاستعلامين إلى الإخراج المطلوب:ID | الاسم | القيمة | ---------------------------- 1 | اختبار | القيمة 1 | 2 | اختبار 2 | القيمة 2 | 1 | اختبار 2 | القيمة 2 | 4 | اختبار | القيمة 1 | 1 | اختبار 3 | VALUE3 |
ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | | 4 | Test | | 1 | Test3 | VALUE3 |توفر هذه الأساليب المرونة في التعامل مع البيانات داخل الجدول، مما يسمح لك بتحديث القيم بناءً على معايير تتضمن صفوفًا أخرى في نفس الجدول.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3