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 (); 
    בחר שורה אקראית עם אורקל:
 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. קחו בחשבון שיש לנו פריטי טבלה שנוצרו במסד הנתונים עם הנתונים הבאים:

טבלה: פריטים

תְעוּדַת זֶהוּת שם הפריט Item_Quantity מחיר מוצר תאריך רכישה
1 סַבּוֹן 5 200 2021-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; 

אנו עשויים לקבל את התוצאות הבאות:

תְעוּדַת זֶהוּת שם הפריט Item_Quantity מחיר מוצר תאריך רכישה
3 עֵט 10 עשרים 2021-07-12

כעת ננסה לבצע את אותה שאילתה פעם נוספת.

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

אנו עשויים לקבל את התוצאות הבאות:

תְעוּדַת זֶהוּת שם הפריט Item_Quantity מחיר מוצר תאריך רכישה
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 () בטבלת העובדים.