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

كيف تقصر وتعويض نتائج استعلام Oracle؟

نشر في 2025-04-20
تصفح:149

How to Efficiently Limit and Offset Query Results in Oracle?

إتقان الحد من الصف والتعويض في استفسارات Oracle

Oracle's rownum pseudocolumn ، الذي يستخدم بشكل متكرر لتقييد مجموعة النتائج ، يمثل تحديًا فريدًا عند الجمع بين الطلب. على عكس MySql's الحد الأدنى ، وهو ما ينطبق بعد الفرز ، rownum مرشحات قبل تتم معالجة بالترتيب بواسطة . هذا يعني ببساطة استخدام Rownum لن يضمن مجموعة فرعية محددة من نتائجك.

النهج القياسي (جميع إصدارات Oracle):

لتحقيق ما يعادل وظائف MySQL

يختار * من ( يختار * من EMP أمر من سال ديسك ) حيث rownum SELECT * FROM ( SELECT * FROM emp ORDER BY sal DESC ) WHERE ROWNUM Rownum

، مما يضمن إرجاع أعلى 5 رواتب.

إزاحة النتائج والقيود:

من أجل التحكم الأكثر تطوراً ، يتطلب تحديد كل من الإزاحة والحدود استعلامًا أكثر تعقيدًا قليلاً:

يختار * من ( حدد A.*، Rownum rnum من ( حدد * - استفسارك الرئيسي مع النظام بالترتيب من Some_table اطلب من Some_Column ) أ حيث rownum =: min_row_to_fetch ؛
SELECT *
FROM (
    SELECT a.*, ROWNUM rnum
    FROM (
        SELECT *  -- Your main query with ORDER BY clause
        FROM some_table
        ORDER BY some_column
    ) a
    WHERE ROWNUM = :MIN_ROW_TO_FETCH;
: max_row_to_fetch

و : min_row_to_fetch مع الحدود العلوية والسفلية المطلوبة. هذا يجلب الصفوف ضمن نطاق معين بعد الطلب.

Oracle 12C و Beyond: The

Fetch Clause: تقدم Oracle 12C (والإصدارات الأحدث) حلًا أكثر أناقة باستخدام

Fetch

الجملة:

- استرداد الصفوف العشرة الأولى يختار * من بعض الشيء الطلب بالاسم جلب أول 10 صفوف فقط ؛ -استرداد الصفوف 20-30 يختار * من بعض الشيء الطلب بالاسم إزاحة 20 صفًا يجلب الصفوف 10 التالية فقط ؛
-- Retrieve the first 10 rows
SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;

-- Retrieve rows 20-30
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
التي تجلبها

طريقة أنظف وأكثر قابلية للقراءة للحد من نتائج وإزاحةها ، مما يجعله الطريقة المفضلة لـ Oracle 12C وبعد ذلك. بالنسبة للإصدارات القديمة ، يظل نهج الاستعلام المتداخل ضروريًا.

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

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

Copyright© 2022 湘ICP备2022001581号-3