كيف يمكنني الحصول على كل n الصفوف في الخلية؟
سؤال
ولدي الجدول الذي يحتوي على تسجيل البيانات في كل دقيقة، لذلك لدي صف لكل دقيقة. عند عودته البيانات للتجهيز، مطلوب هذه الدقة ل6 ساعات الماضية ولكن بعد ذلك، وهو مستوى أقل من دقة غير كافية، على سبيل المثال كل 5 دقائق.
ويمكنني إرجاع كافة البيانات في صفيف ثم قم بإزالة كافة ولكن كل عنصر 5TH ولكن هذا يتطلب من جميع البيانات التي يتم إرجاعها بواسطة الخلية ومن ثم قراءة في مجموعة أولا - الكثير من البيانات
وكيف يمكن أن أعود كل صف الألف في الخلية؟ لقد قرأت هذا بلوق وظيفة مما يوحي باستخدام أساسي 5٪ = 0 حيث أساسي هو AUTO_INCREMENT ولكن هذا
وأ) لا تستخدم الفهارس ب) سيعود فقط القيم أساسي وهي القسمة على 5 و في حالة الحذف، قد لا يكون في الواقع كل صف 5TH
ويمكن أن يتم ذلك فقط من خلال الاستعلام SQL أم أنها تتطلب حلقات من صف من خلال مجموعة النتائج باستخدام المؤشرات؟
MySQLi في PHP للاتصال DB.
المحلول
وقائمة الطوابع الزمنية كل 5 دقائق:
SELECT
MIN(logtimestamp) AS first_of_five_minutes
FROM tLog
GROUP BY
DATE(logtimestamp),
HOUR(logtimestamp),
MINUTE(logtimestamp) - (MINUTE(logtimestamp) % 5)
والآن، يمكنك استخدام هذا فرعية مختارة للحصول على إدخالات سجل طلب الانضمام إلى logtimestamps
first_of_five_minutes
على. وبطبيعة الحال، إضافية لبنود WHERE
لا بد من تكرارها في الداخل والخارج حتى تحصل على الطوابع الزمنية "الصحيحة".
لاحظ أيضا أن هذا يعود الطابع الزمني الأول في كل فترة لمدة خمس دقائق، فراس حلول مباشرة باستخدام minutes%5 = 0
فقط العودة logentries التي هي في الواقع على مضاعفات: 05، والتي قد تفشل إذا كان لديك التأخير في سجلات تسجيل أو ما شابه
نصائح أخرى
ولم تختبر تماما ولكن هذا يمكن أن تعمل
SELECT Row, col_a
FROM (SELECT @row := @row + 1 AS Row, col1 AS col_a FROM table1) As derived1
WHERE Row%5 = 0;