وصول DB الاستعلام - بحاجة للمساعدة تحديث سجلات معينة
-
20-08-2019 - |
سؤال
ولدي DB الوصول التي نستخدمها لتتبع التذاكر. قد يكون كل تذكرة حوادث متعددة بسبب التغييرات البرمجة المختلفة المرتبطة بهذا التذاكر. يحتوي كل سجل أيضا حقل program_type وهو SVR أو VB. مثال:
123456 - SVR - SomeCode
123456 - VB - SomeVBCode
ولقد أضاف عمود إلى قاعدة بيانات تسمى VB_Flag، الذي افتراضات إلى 0، والذي أود أن تتغير إلى الرقم 1 لكل تذكرة يحتوي على التعليمات البرمجية VB. لذا، فإن النتيجة هنا هي:
123456 - SVR - SomeCode - 1
123456 - VB - SomeVBCode - 1
ولكن، وأنا لا يمكن معرفة لحياة لي كيف تكتب هذا الاستعلام التحديث. في البداية حاولت:
UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB'
ولكن هذا اليسار الواضح من كافة التعليمات البرمجية SVR أن يشارك عدد التذاكر مع رمز VB.
وأنا في حيرة. مساعدة؟
المحلول
وهذا يجب أن تعمل:
UPDATE table SET VB_Flag = 1
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
نصائح أخرى
ويمكنك أن تفعل شيئا من هذا القبيل:
UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');
وعبارة SELECT الداخلي بإرجاع قائمة بجميع ticket_ids التي لديها program_type من "VB".
والتحديث ثم تعيين VB_Flag إلى 1 لجميع السجلات مع واحدة من تلك ticket_ids (وهذا يشمل تلك التي لديها program_type من "SVR.
وUPDATE الطاولة INNER JOIN الجدول AS Table2 ON Table.TicketNumber = Table2.TicketNumber جلس Table2.VB_Flag = 1 أين (([المائدة]. [program_type] = "VB"))
وبسيطة متداخلة حدد يجب أن تأخذ الرعاية من مشكلتك:
UPDATE myTable
SET VB_Flag = 1
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')