عندما تمثل العلاقة زوجًا من القيم، مثل القسم والراتب، فقد تحتاج إلى مطابقة الزوج كاملًا مع صف في نتيجة استعلام فرعي. تدعم MySQL استخدام تركيب صف مثل (department_id, salary) مع IN، بشرط أن يعيد الاستعلام الداخلي عمودين بالترتيب المقابل.
هذه الصيغة تختلف عن اختبار كل عمود بصورة مستقلة باستخدام شرطين منفصلين. الاختبار المنفصل قد يجد القسم في صف والراتب في صف آخر، فيقبل زوجًا لم يظهر أصلًا ضمن النتائج الداخلية. أما مقارنة الزوج فتشترط أن تجتمع القيمتان في الصف الداخلي نفسه.
مثال
WITH employees AS (
SELECT 1 AS id, 10 AS department_id, 100 AS salary
UNION ALL SELECT 2, 10, 200
UNION ALL SELECT 3, 20, 100
)
SELECT id FROM employees
WHERE (department_id, salary) IN (
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
);
في مثال أعلى راتب لكل قسم، يحافظ الزوج على ارتباط كل قيمة قصوى بقسمها. وتظهر جميع التعادلات لأن الاختبار يصفّي الصفوف ولا يختار موظفًا واحدًا فقط.
باختصار: استخدم مقارنة زوج الأعمدة عندما يجب أن تنتمي القيم المطابقة إلى الصف الداخلي نفسه.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.