كيفية الحصول على جميع صفوف بدء من الصف x في mysql

StackOverflow https://stackoverflow.com/questions/1492297

  •  18-09-2019
  •  | 
  •  

سؤال

في MySQL، كيف يمكنني استرجاع جميع الصفوف في طاولة، بدءا من الصف X؟ على سبيل المثال، بدءا من الصف 6:

LIMIT 5,0

هذا يعود شيئا، لذلك حاولت هذا:

LIMIT 5,ALL

لا تزال هناك نتائج (خطأ SQL).

أنا لا أبحث عن وظيفة الصفحات، فقط استرجاع جميع الصفوف بدءا من صف معين. LIMIT 5,2000 يبدو وكأنه مبالغة لي. يبدو أن Google بطريقة ما يبدو لي بعض الإجابات. آمل أن تتمكن من المساعدة.

شكرا

هل كانت مفيدة؟

المحلول

بحسب ال توثيق:

لاسترداد جميع الصفوف من إزاحة معينة حتى نهاية مجموعة النتائج، يمكنك استخدام عدد كبير للمعلمة الثانية. يسترد هذا البيان جميع الصفوف من الصف 96 إلى آخر:

SELECT * FROM tbl LIMIT 95, 18446744073709551615;

هذا ال أقصى الصفوف يمكن أن تعقد طاولة MyISAM, 2^64-1.

يوجد حد 2 ^ 32 (~ 4.295E + 09) في طاولة MyISAM. إذا قمت ببناء MySQL مع خيار - With-Big-Tably، يتم زيادة قيود الصف إلى (2 ^ 32) ^ 2 (1.844e + 19) الصفوف. انظر القسم 2.16.2، "خيارات تكوين نموذجية". يتم بناء توزيعات ثنائية ل UNIX و Linux مع هذا الخيار.

نصائح أخرى

إذا كنت تتطلع إلى الحصول على آخر رقم X من الصفوف، فإن أسهل شيء يجب القيام به هو SORT DESC والحد إلى أول × الصفوف. منحت، و SORT سوف تبطئ الاستعلام الخاص بك لأسفل. ولكن إذا كنت تعارض تحديد عدد كبير بشكل تعسفي كثاني LIMIT arg، ثم هذه هي الطريقة للقيام بذلك.

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

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

يجب أن يعمل الاستعلام التالي أيضا، وهو في رأيي أكثر فعالية ...

SELECT * FROM mytbl WHERE id != 1 ORDER BY id asc

من خلال طلب الاستعلام ستجد المعرف imediately وتخطي هذا واحد، وبالتالي فإن الصفوف التالية لن يتحقق بعد الآن ما إذا كان المعرف = 1.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top