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

كيفية استرداد أحدث تاريخ السجل والقيمة لكل مستخدم في قاعدة بيانات؟

نشر في 2025-03-04
تصفح:368

How to Efficiently Retrieve the Latest Record Date and Value for Each User in a Database?

استخراج آخر تاريخ إدخال وقيمة لكل مستخدم

يوضح هذا الدليل كيفية الاستعلام بكفاءة في جدول قاعدة بيانات لإدخالات تسجيل الدخول إلى المستخدم لاسترداد أحدث تاريخ وقيمة مرتبط به لكل مستخدم. سنستكشف طريقتين: نهج انضمام تقليدي وطريقة أكثر قوة باستخدام وظائف النافذة.

الطريقة 1: انضم إلى subquery

يستخدم النهج الشائع انضمامًا داخليًا مع مساع فرعي للعثور على الحد الأقصى للتاريخ لكل مستخدم:

select t.username, t.date, t.value
from MyTable t
inner join (
    select username, max(date) as MaxDate
    from MyTable
    group by username
) tm on t.username = tm.username and t.date = tm.MaxDate

يسترجع هذا الاستعلام بشكل فعال آخر سجل لكل اسم مستخدم. ومع ذلك ، فإن العيب المحتمل هو أنه قد يعيد إدخالات متعددة إذا كانت هناك العديد من السجلات تشترك في نفس الحد الأقصى لمستخدم معين.

الطريقة 2: وظائف النافذة للتعامل مع تواريخ مكررة

للتعامل مع تواريخ مكررة محتملة ، توفر وظائف النافذة حلًا متفوقًا:

select x.username, x.date, x.value 
from (
    select username, date, value,
        row_number() over (partition by username order by date desc) as _rn
    from MyTable 
) x
where x._rn = 1

تقوم هذه الطريقة بتعيين رتبة فريدة لكل سجل لكل مستخدم ، تم طلبها حسب التاريخ بترتيب تنازلي. من خلال التصفية للصفوف برتبة 1 ( _ rn = 1 ) ، فإننا نضمن استرجاع السجل الفردي الأحدث ، حتى في وجود إدخالات متعددة بنفس التاريخ. هذا يضمن الدقة ويتجنب الغموض.

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

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

Copyright© 2022 湘ICP备2022001581号-3