سؤال
لدي البيانات التالية في جدول الجدول 1
الوثيقة ------ field1.
12345
23456
34567
45678
98765
لدي البيانات التالية في عرض عرض 1
وثيقة ---- حافلة
12345 ------------ 5
23456 ------------ 6
34567 ------------ 8
45678 ------------ 12
98765 ------------ 14
ما أود القيام به هو تحديث كل صف
إذا (table1.document = view1.document)
ثم table1.field1 = view1.bus
أي رؤية سوف تساعد.
شكرًا لك.
المحلول
التي يمكن القيام بها باستخدام SQL عادي، لا توجد إجراءات مطلوبة:
UPDATE table1 SET field1 = (SELECT bus FROM view1 WHERE table1.document = view1.document)
أو، إذا سمحت قاعدة البيانات الخاصة بك:
UPDATE (select table1.field1, view1.bus FROM table1 JOIN view1 ON table1.document = view1.document) SET table1.field1 = view1.bus
نصائح أخرى
كما قال دان، ولكن في خادم MS SQL، أجد هذا التصميم أسهل في القراءة:
قم بتحديث U Set U.field1 = v.bus من Table1 as u انضم إلى View1 as v على v.document = u.document
لاحظ أنه إذا كان يمكن أن يحتوي View1 على صفوف متعددة من قيمة صف معين [المستند] ثم ستكون تخطيط القيمة [BUS] لتحديث Table1 عشوائيا، داخل مجموعة مطابقة. (إذا كان هذا هو الحال، فقد يتم تعديل الاستعلام لاختيار MAX / MIN / إلخ)
أود أن أؤكد هذا الاستعلام لعدم تحديث أي صفوف مطابقة بالفعل لقيمة الحافلات، والتي ستجعلها أسرع إذا تم إعادة تشغيلها، وبالتالي توجد بعض القيم بالفعل في الجدول 1
قم بتحديث U Set U.field1 = V.Bus من Table1 as u انضم إلى View1 as v على v.document = u.document حيث u.field1 = v.bus أو (u.field1 ليس خالية و V.Bus خالية) أو (U.field1 Null و V.Bus ليست فارغة)
يمكنك ترك الاختبارات الخالية / غير الفارغة إذا تم تعريف الحقل على أنه لا يسمح ب Nulls.