انتقل إلى محتوى الدرس

List Subqueries with IN Operator استعلامات القوائم بمعامل IN

تعلّم الاستعلامات الفرعية مع IN و ANY و ALL والجداول المشتقة في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

عندما يرجع الاستعلام الداخلي عموداً واحداً يحتوي على عدة صفوف، فإنه يشكّل قائمة قيم. ولا يجوز مقارنة القائمة بمعامل المساواة المجرد =، بل نستخدم معها المعامل IN:

  • فحص الانتماء للقائمة: تختبر الصيغة WHERE user_id IN (SELECT ...) ما إذا كانت قيمة العمود الخارجي مطابقة لأي قيمة ضمن مخرجات الاستعلام الفرعي.
  • فخ NOT IN مع NULL: إذا احتوت مخرجات الاستعلام الفرعي على قيمة NULL واحدة فقط، فإن الشرط NOT IN (SELECT ...) يُقيّم إلى غير معروف UNKNOWN ويرجع صفراً من الصفوف! لذلك أضف دائماً WHERE col IS NOT NULL داخل استعلام NOT IN.
SQL
-- Find customers who placed at least one high-value order in 2026
SELECT
  user_id,
  full_name,
  email
FROM users
WHERE user_id IN (
  SELECT user_id
  FROM orders
  WHERE total_amount >= 500.00
    AND user_id IS NOT NULL
);