"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استرداد الصف الأول فقط في الصلة اليسرى؟

كيفية استرداد الصف الأول فقط في الصلة اليسرى؟

تم النشر بتاريخ 2024-11-18
تصفح:167

How to Retrieve Only the First Row in a LEFT JOIN?

استرداد الصف الأول فقط في LEFT JOIN

في SQL، يمكن أن يؤدي إجراء عملية LEFT JOIN إلى صفوف متعددة من الجدول الأيمن تتم مطابقتها لصف واحد من الجدول الأيسر. في بعض السيناريوهات، من المستحسن استرداد الصف الأول فقط من الجدول الأيمن لكل صف في الجدول الأيسر.

ضع في اعتبارك بنية البيانات المبسطة التالية:

**Feeds**
id | title | content
----------------------
1  | Feed 1 | ...

**Artists**
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2

**feeds_artists**
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1

لاسترداد مقالات الخلاصة وربط الفنان الأول فقط بكل خلاصة، يمكن تجربة بناء الجملة التالي:

SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
    SELECT feeds_artists.feed_id FROM feeds_artists
    WHERE feeds_artists.feed_id = feeds.id
    LIMIT 1
)
WHERE feeds.id = '13815'

ومع ذلك، قد لا يؤدي هذا الأسلوب إلى النتائج المرجوة. ولتحقيق الهدف فكر في البديل التالي:

SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
    SELECT
      MIN(fa.artist_id) a_id
    FROM feeds_artists fa 
    WHERE fa.feed_id = f.id
)

يستخدم هذا التعديل الدالة MIN() لتحديد الفنان صاحب أقل معرف، على افتراض أن معرفات الفنان تتزايد بمرور الوقت. ونتيجة لذلك، لن تقوم LEFT JOIN سوى باسترداد الفنان الأول المرتبط بكل موجز.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3