شرح صفوف ومحتوى الفقرة
عبر دمج الحذف المترابط DELETE مع نمط ربط عدم التطابق LEFT JOIN ... WHERE right_table.pk IS NULL، يمكنك تنظيف السجلات اليتيمة المعزولة أو الجلسات المؤقتة المنتهية التي لا تملك سجلاً مقابلاً في الجدول الرئيسي:
- عزل السجلات غير المرتبطة بدقة: وضع الجدول المراد تنظيفه على اليسار وفحص
IS NULLعلى المفتاح الأساسي للجدول الأيمن يحصر الحذف في الصفوف المعزولة فقط. - التحقق المسبق بـ
SELECT: نفّذ دائماً نفس جملةFROM ... LEFT JOIN ... WHERE ... IS NULLكاستعلام قراءةSELECT COUNT(*)أولاً للتحقق من عدد الصفوف قبل تحويلها إلىDELETE.
SQL
-- Purge orphaned cart items whose parent shopping cart no longer exists
DELETE ci
FROM cart_items AS ci
LEFT JOIN shopping_carts AS sc
ON ci.cart_id = sc.cart_id
WHERE sc.cart_id IS NULL;