استخراج آخر تاريخ إدخال وقيمة لكل مستخدم
يوضح هذا الدليل كيفية الاستعلام بكفاءة في جدول قاعدة بيانات لإدخالات تسجيل الدخول إلى المستخدم لاسترداد أحدث تاريخ وقيمة مرتبط به لكل مستخدم. سنستكشف طريقتين: نهج انضمام تقليدي وطريقة أكثر قوة باستخدام وظائف النافذة.
الطريقة 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