سؤال:
افترض أن جدول قاعدة البيانات يحتوي على معلومات تسجيل الدخول إلى المستخدم ، كيف يمكننا استرداد تاريخ تسجيل الدخول الأخير لكل مستخدم؟ بالنظر إلى أنه قد يكون هناك تواريخ تسجيل دخول مكررة.
حل:
هناك طريقتان شائعتان لحل هذه المشكلة:
الطريقة 1: subquery باستخدام Inner Join
تستخدم هذه الطريقة مساعًا فرعيًا لتحديد تاريخ تسجيل الدخول الأخير لكل مستخدم ، ثم يتم استخدامه لتصفية الجدول الرئيسي:
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.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3