سؤال

لدي البيانات التالية في جدول الجدول 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top