سؤال

أعلم أن العنوان قد يبدو غريبا ولكن هذا ما أريد القيام به:

  1. لدي جدول مع العديد من السجلات.
  2. أريد الحصول على بعض هذه السجلات وإدراجها في جدول آخر.شيء من هذا القبيل:

    INSERT INTO TableNew SELECT * FROM TableOld WHERE ...

  3. الجزء الصعب هو أنني أريد أن يتم حذف هذه الصفوف التي أدرجتها من جدول الأصل أيضا.

هل هناك طريقة سهلة للقيام بذلك ، لأن التفكير الوحيد الذي تمكنت من القيام به هو استخدام جدول مؤقت لحفظ السجلات المحددة ومن ثم وضعها في الجدول الثاني وحذف الصفوف التي تتطابق معها من الجدول الأول.إنه حل ، ولكن مع وجود العديد من السجلات (أكثر من 3 ملايين ونصف) أبحث عن فكرة أخرى...

هل كانت مفيدة؟

المحلول

في عام 2005+ استخدام OUTPUT بند مثل هذا:

DELETE FROM TableOld 
OUTPUT DELETED.* INTO TableNew
WHERE YourCondition

سيتم تنفيذها في معاملة واحدة وإما الانتهاء أو التراجع في وقت واحد

نصائح أخرى

يمكنك استخدام إدراج ... الإخراج جملة لتخزينمعرف الصفوف المنسوخة في طاولة مؤقتة.ثم يمكنك حذف الصفوف من الجدول الأصلي بناء على الجدول المؤقت. giveacodicetagpre.

href="http://data.stackexchange.com/stackoverflow/query/59947/new" rel="nofollow"> مثال العمل في مستكشف البيانات.

يجب عليك فعل شيء مثل هذا: giveacodicetagpre.

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