استرداد الصف الأول فقط في 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