TOP

مشغلي SQL ANY وALL

وصف SQL ANY وALL

تسمح لك عبارات SQL ANY وALL بإجراء مقارنات بين قيمة عمود واحد ونطاق من القيم الأخرى.


وصف SQL ANY

ANY عامل التشغيل:

  • تقوم بإرجاع قيمة منطقية كنتيجة
  • تُرجع TRUE إذا كانت ANY من قيم الاستعلام الفرعي تطابق الشرط
  • ANY يعني أن الشرط سيكون صحيحًا إذا كانت العملية صحيحة لأي من القيم الموجودة في النطاق.

    ANY بناء الجملة

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    يجب أن يكون عامل التشغيل عامل مقارنة قياسي (=، <>، !=، >، >=، <، أو <=).

    وصف SQL ALL

    عامل التشغيل ALL:

  • تقوم بإرجاع قيمة منطقية كنتيجة
  • تُرجع TRUE إذا كانت قيم الاستعلام الفرعي ALL تطابق الشرط
  • يُستخدم مع عوامل التشغيل SELECT وWHERE وHAVING
  • ALL يعني أن الشرط سيكون صحيحًا فقط إذا كانت العملية صحيحة لجميع القيم الموجودة في النطاق.

    ALL بناء الجملة مع SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL بناء الجملة مع WHERE أو HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    يجب أن يكون عامل التشغيل عامل مقارنة قياسي (=، <>، !=، >، >=، <، أو <=).

    قاعدة البيانات التوضيحية

    ما يلي هو نموذج من الجدول "Products" ("المنتجات") لقاعدة البيانات "Northwind":

    ProductIDProductNameSupplierIDCategoryIDUnitPrice
    1Chais1110 boxes x 20 bags18.00
    2Chang1124 - 12 oz bottles19.00
    3Aniseed Syrup1212 - 550 ml bottles10.00
    4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
    5Chef Anton's Gumbo Mix2236 boxes21.35
    6Grandma's Boysenberry Spread3212 - 8 oz jars25.00
    7Uncle Bob's Organic Dried Pears3712 - 1 lb pkgs.30.00
    8Northwoods Cranberry Sauce3212 - 12 oz jars40.00
    9Mishi Kobe Niku4618 - 500 g pkgs.97.00
    10Ikura4812 - 200 ml jars31.00

    والعينة من الجدول "OrderDetails" ("تفاصيل الطلب"):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    أمثلة SQL ANY

    يسرد استعلام SQL التالي ProductName إذا وجد أي سجل (ANY) في الجدول OrderDetails بقيمة Quantity تساوي 10 (سيرجع هذا TRUE لأن العمود Quantity يحتوي على بعض القيم 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)
    

    يسرد استعلام SQL التالي ProductName إذا وجد أي سجل (ANY) في الجدول OrderDetails بكمية أكبر من 99 (سيؤدي هذا إلى إرجاع TRUE لأن العمود Quantity يحتوي على بعض القيم أكبر من 99):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 99)
    

    تسرد عبارة SQL أخرى ProductName إذا وجدت أي سجل (ANY) في جدول OrderDetails بكمية أكبر من 1000 (سيؤدي هذا إلى إرجاع FALSE لأن عمود Quantity لا يحتوي على قيم أكبر من 1000):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 1000)
    

    أمثلة SQL ALL

    تسرد عبارة SQL التالية جميع أسماء المنتجات (ALL):

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    تسرد عبارة SQL التالية ProductName إذا كانت كافة السجلات (ALL) في الجدول OrderDetails تحتوي على عدد يساوي 10. بالطبع سيُرجع هذا FALSE لأن العمود Quantity يحتوي على العديد من القيم المختلفة (وليس فقط القيمة 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ALL
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)