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

كيفية استرداد السجلات الأولى والأخيرة للبيانات المجمعة بكفاءة في MySQL؟

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

How to Efficiently Retrieve First and Last Records of Grouped Data in MySQL?

استرجاع السجلات الأولى والأخيرة للبيانات المجمعة باستخدام الوظائف المجمعة في MySQL

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

لتحسين هذه العملية، توفر MySQL حلاً أكثر كفاءة باستخدام وظائف GROUP_CONCAT وSUBSTRING_INDEX .

باستخدام GROUP_CONCAT و SUBSTRING_INDEX

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

SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open
SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close

كيف يعمل:

  • GROUP_CONCAT يسلسل جميع قيم الفتح أو الإغلاق في سلسلة واحدة، مرتبة حسب التاريخ والوقت العمود.
  • SUBSTRING_INDEX يستخرج القيمتين الأولى والأخيرة من السلسلة المتسلسلة عن طريق تقسيمها بالفاصلة ('،'). تشير الوسيطة '1' إلى التواجد الأول أو الأخير.

مثال:

خذ بعين الاعتبار الاستعلام التالي:

SELECT MIN(low_price), MAX(high_price),
SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open,
SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)

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

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

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

Copyright© 2022 湘ICP备2022001581号-3