אם אתה רוצה שהרשומה המתקבלת תהיה הוזמן באופן אקראי , עליך להשתמש בקודים הבאים לפי מספר מסדי נתונים.
הנה שאלה: מה הצורך להביא רשומה אקראית או שורה ממסד נתונים?
לפעמים ייתכן שתרצה להציג מידע אקראי כמו מאמרים, קישורים, דפים וכו', למשתמש שלך.
אם אתה רוצה להביא שורות אקראיות מאחד ממסדי הנתונים, עליך להשתמש בכמה שאילתות שהשתנו בהתאם לבסיסי הנתונים.
אם ברצונך להחזיר שורה אקראית עם MY SQL, השתמש בתחביר הבא:
SELECT column FROM table ORDER BY RAND () LIMIT 1;
SELECT column FROM table ORDER BY RANDOM () LIMIT 1;
SELECT TOP 1 column FROM table ORDER BY NEWID ();
SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1;
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 () בטבלת העובדים.