يوضح هذا المثال كيفية تحديد أقدم شخص داخل كل مجموعة في جدول SQL ، مع الأخذ في الاعتبار الترتيب الأبجدي لحل العلاقات. يتضمن هيكل الجدول أعمدة "شخص" و "مجموعة" و "عصر":
مثال على الجدول:
شخص | مجموعة | عمر |
---|---|---|
بوب | 1 | 32 |
Jill | 1 | 34 |
Shawn | 1 | 42 |
Jake | 2 | 29 |
بول | 2 | 36 |
Laura | 2 | 39 |
الهدف: ابحث عن أقدم شخص في كل مجموعة ، مع إعطاء الأولوية الأبجدية إذا كانت الأعمار متطابقة.
SQL Solution:
SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age b.Person))
WHERE b.Person IS NULL;
توضيح:
يستخدم هذا الاستعلام ترك الانضمام
لمقارنة كل شخص ( o
) مع جميع الآخرين في نفس المجموعة ( b
). The على
، مرشحات الفقرة للصفوف حيث إما:
o.age : o
أصغر من b
(المعنى o
ليس الأقدم).
o.age = b.age و o.person> b.person
: o
هو نفس عمر b
، ولكنه أبجديًا لاحقًا (يعني
يقوم بتصفية أي صفوف من o
التي كانت تتطابق مع b
، مما يترك فقط أقدم شخص (أو أبجديًا أولاً إذا كان هناك ربطة عنق) في كل مجموعة.
استكشاف إضافي:
من أجل فهم أكثر شمولاً لتقنيات SQL المتقدمة والمخاطر المحتملة ، راجع موارد مثل "SQL antepatterns Volume 1: تجنب المزالق لبرمجة قاعدة البيانات."
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3