وصول DB الاستعلام - بحاجة للمساعدة تحديث سجلات معينة

StackOverflow https://stackoverflow.com/questions/496483

  •  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')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top