SQL - عودة عدد محدود من الصفوف، ولكن عدد الصف الكامل

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

  •  18-09-2019
  •  | 
  •  

سؤال

السيناريو: أحتاج إلى سحب المعلومات من قاعدة بيانات Visual FoxPro؛ ومع ذلك، فإن تشغيل الاستفسارات الكبيرة ضد هذا لديه ميل لإغلاق النظام. لحل هذا، نضع حدودا في المكان الذي ألغيت الاستعلام إذا تم تشغيل فترة زمنية معينة، ويقتصر عدد الصفوف التي سيعودها.

هل هناك طريقة للحصول على استعلام مع "Select Top ###"، ولكن أيضا إرجاع العدد الفعلي للصفوف التي تم العثور عليها من خلال العبارة؟ أو هي الطريقة الوحيدة لتشغيل الاستعلام مرتين؟ (سبب كوننا لا يزال بإمكاننا إجراء الاستعلام، ولكن إبلاغ المستخدم بما يحدث. IE "First ### المعروض من ### تم العثور على عناصر").

كانت محاكما الأولية هي ببساطة إضافة "عدد (*" (*) "إلى الجزء المحدد من العبارة، لكن ذلك لم ينجز ما كنت أبحث عنه (عاد العدد الصحيح من الصفوف، ولكن عاد فقط صف واحد ل بقية البيانات).

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

المحلول

إذا فهمت السؤال بشكل صحيح، فيمكنك القيام بتشغيل Subsect، ولكن هذا يعني أنك تسميه عد SQL لكل صف عاد:

select top 10 field1, field2, (select count(*) from table) as totalrows from table

من شأنها أن تعطيك أعلى 10 صفوف مع عمود إضافي في كل منها يسمى Talterrows، الذي يحتوي على عدد الصفوف في الجدول.

شخصيا رغم ذلك، كنت فقط تشغيل استعلام منفصل للحصول على القمة ن الصفوف والعدد.

نصائح أخرى

سوف تحتاج إلى تشغيل 2 مختارات منفصلة. واحد لاسترداد عدد الصفوف التي تم إرجاعها من قبل الاستعلام ثم لإرجاع مجموعة فرعية من السجلات للحصول على صفحة معينة.

يمكنك تحسين ذلك من خلال استرداد إجمالي عدد مرة واحدة فقط، عندما يتم استرداد "الصفحة الأولى" (أي لا تفعل العد بأكمله للصفحات اللاحقة)

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