logo

ترتيب SQL عشوائيا

إذا كنت تريد أن يكون السجل الناتج أمر عشوائيا ، يجب عليك استخدام الأكواد التالية وفقًا لعدة قواعد بيانات.

مادة زاوية

هنا سؤال: ما هي الحاجة لجلب سجل عشوائي أو صف من قاعدة البيانات؟

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

إذا كنت تريد جلب صفوف عشوائية من أي من قواعد البيانات، فيجب عليك استخدام بعض الاستعلامات المعدلة وفقًا لقواعد البيانات.

    حدد صفًا عشوائيًا باستخدام MySQL:

إذا كنت تريد إرجاع صف عشوائي باستخدام MY SQL، استخدم بناء الجملة التالي:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    حدد صفًا عشوائيًا باستخدام Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    حدد صفًا عشوائيًا باستخدام SQL Server:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    حدد صفًا عشوائيًا باستخدام Oracle:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    حدد صفًا عشوائيًا باستخدام IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

لفهم هذا المفهوم عمليًا، دعونا نرى بعض الأمثلة باستخدام قاعدة بيانات MySQL. لنفترض أن لدينا عناصر جدول تم إنشاؤها في قاعدة البيانات بالبيانات التالية:

الجدول: العناصر

بطاقة تعريف اسم العنصر البند الكمية سعر_الصنف تاريخ_الشراء
1 صابون 5 2002021-07-08
2 معجون الأسنان 2 80 2021-07-10
3 قلم 10 خمسون 2021-07-12
4 زجاجة 1 250 2021-07-13
5 فرشاة 3 90 2021-07-15

لنفترض أننا نريد استرداد أي سجل عشوائي من جدول العناصر.

وسوف نقوم بكتابة الاستعلام على النحو التالي:

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

وقد نحصل على النتائج التالية:

بطاقة تعريف اسم العنصر البند الكمية سعر_الصنف تاريخ_الشراء
3 قلم 10 عشرين 2021-07-12

الآن دعونا نحاول تنفيذ نفس الاستعلام مرة أخرى.

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

وقد نحصل على النتائج التالية:

بطاقة تعريف اسم العنصر البند الكمية سعر_الصنف تاريخ_الشراء
5 فرشاة 3 90 2021-07-15

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

الآن، لنفترض أنك تريد جلب كافة سجلات الجدول بشكل عشوائي.

للقيام بذلك، نحتاج إلى تنفيذ الاستعلام التالي:

 mysql> SELECT * FROM items ORDER BY RAND (); 

وقد نحصل على النتائج التالية:

بطاقة تعريف اسم العنصر البند الكمية سعر_الصنف تاريخ_الشراء
4 زجاجة 1 250 2021-07-13
5 فرشاة 3 90 2021-07-15
1 صابون 5 200 2021-07-08
2 معجون الأسنان 2 80 2021-07-10
3 قلم 10 خمسون 2021-07-12

هناك أيضًا إمكانية الحصول على بعض الترتيبات المختلفة للسجلات إذا قمنا بتنفيذ وظيفة RAND () مرة أخرى على جدول الموظفين.