EDUCBA Logo

EDUCBA

MENUMENU
  • Explore
    • EDUCBA Pro
    • PRO Bundles
    • Featured Skills
    • New & Trending
    • Fresh Entries
    • Finance
    • Data Science
    • Programming and Dev
    • Excel
    • Marketing
    • HR
    • PDP
    • VFX and Design
    • Project Management
    • Exam Prep
    • All Courses
  • Blog
  • Enterprise
  • Free Courses
  • Log in
  • Sign Up
Home Data Science Data Science Tutorials MySQL Tutorial MySQL ORDER BY Random
 

MySQL ORDER BY Random

Updated May 31, 2023

MySQL ORDER BY Random

 

 

Introduction to MySQL ORDER BY Random

MySQL ORDER BY Random is a MySQL technique to randomly query data records from a table in a specific MySQL database. This MySQL command helps to fetch the table rows with the ORDER BY clause unsystematically. For example, suppose we need to use this MySQL ORDER BY Random for selecting the following records from the table:

Watch our Demo Courses and Videos

Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more.

  • Few random posts in a blog and show them in the particular sidebar.
  • A random quote for presenting, “Latest Quote of the Day,” like in the widget section.
  • Random images in a gallery and implement them as highlighted images.

MySQL has no built-in statement to choose unplanned table rows from a database table. Therefore, we will apply the MySQL RAND() function.

Syntax

Let us view the basic syntax structure that shows the working for the ORDER BY RAND() function:

SELECT * FROM TableName ORDER BY RAND() LIMIT1;

The explanation of the above syntax query:

  • The MySQL RAND() function produces a random value for every table row.
  • After this, the ORDER BY clause helps to sort all the table rows by the random value or number produced by the function RAND() in MySQL.
  • Next is the LIMIT clause, which picks the initial table row in a set of results that are ordered randomly.

Presume that you want to select random rows of records from the table in the database with the value ‘n,’ then we need to modify the LIMIT clause value as below:

SELECT * FROM TableName ORDER BY RAND() LIMIT N;

How does ORDER BY Random work in MySQL?

  • The ORDER BY RAND() technique in MySQL works to select the column values or records from the database table displayed randomly. The SELECT statement is used to query this technique.
  • We will sort the records fetched with a query in MySQL using a specific function RAND(). Especially we can use this method to shuffle the song list while building up a music player so that each new playlist is generated from songs in the database than the previous list.
  • This randomly selecting records makes it useful for the tables to have a small amount of data rows. Moreover, it works fast for query execution and result display.
  • However, when used in a large table, this may slow down the process of execution using the ORDER BY RAND() function. MySQL needs to sort the whole table to find the random values, which is time-consuming.
  • Therefore, the speed of this command query will depend on the number of rows available in a database table. So, if the table consists of more records, producing the random values in the result set for each row will require more time.

Examples of MySQL ORDER BY Random

We will evaluate the demonstration of this MySQL technique using the following examples:

Example #1 – Using ORDER BY RAND()

Let us take a sample database table named Employeeshaving fields EmpID, EmpName, EmpProfile, EmpSalary, and EmpPF.

select * from employees;

Output:

MySQL ORDER BY Random output 1

Suppose we will randomly fetch three employee rows from this table using the following query:

SELECT EmpID, EmpName, EmpProfile FROM Employees ORDER BY RAND() LIMIT 3;

Output:

MySQL ORDER BY Random output 2

We can view that the provided result is somewhat different from the general one due to the randomized result query.

Example #2 – Using ORDER BY RAND() and INNER clause

For this example, we need the demo table whose fields have attributes: PRIMARY KEY and Auto Increment. Also, there should be no gap in the order series.

Now, based on the primary key table column, we have written the below query to produce the random number row values:

SELECT ROUND( RAND() * (SELECT MAX(Col_ID) FROM TableName)) AS Col_ID;

With the result set provided by the above query, we will join the table as follows:

SELECT y.* FROM TableName AS y INNER JOIN
(SELECT ROUND( RAND() * (SELECT MAX(Col_ID) FROM TableName) ) AS Col_ID )
AS x WHERE y.Col_ID>= x.Col_ID LIMIT 1;

Applying this process, we need to execute the command more than once to fetch multiple rows randomly. Increasing the command limit will only provide the serial rows that begin randomly from the row selected.

SELECT y.EmpID, y.EmpName FROM Employees AS y JOIN
(SELECT ROUND( RAND() * (SELECT MAX(EmpID) FROM Employees) ) AS EmpID)
AS x WHERE y.EmpID >= x.EmpID LIMIT 1;

Output:

MySQL ORDER BY Random output 3

Example #3 – Using ORDER BY RAND() using a Subquery

With the previous query technique, we can apply a subquery to sort randomly and view the name in either ascending or descending order as follows:

SELECT * FROM (SELECT * FROM Employees ORDER BY RAND() LIMIT 5)Empsub ORDER BY EmpName;

Output:

output 4

Example #4 – Using ORDER BY RAND() using variables

Assuming that the database table includes an id column with the values falling in the range 1,..,n and consists of no gab. Then we need to follow the steps:

Firstly, select the random numbers within the 1,..,n range.

Next, we will choose the records based on random numbers. To accomplish this, we will use the following query:

SELECT TableName.* FROM (SELECT ROUND( RAND() * (SELECT MAX(Col_ID) FROM TableName) ) RandomVal, @val:=@val + 1 FROM (SELECT @val:=0)AS y , TableName LIMIT n )AS x, TableName AS a WHERE x.RandomVal = a.Col_ID;

Remember that the user-defined variables are known to be connection-specific. This means that the proceeding technique cannot be implemented along with the connection pooling. For this purpose, we must also confirm that the column field in the specified table having PRIMARY KEY should be of data type integer. In addition, the table column values should also be in the defined series without any gap.

Conclusion

The MYSQL ORDER BY RAND() is essential to display the results to be ordered randomly. Like any information related to articles, pages, links, etc., that we want to show in the order sorted randomly from several databases.

Applying the ORDER BY RAND() technique in MySQL can be significant. However, if the table being queried is large, generating the results using ORDER BY RAND() can be time-consuming. Otherwise, tables having fewer records gives faster results.

Recommended Articles

We hope that this EDUCBA information on “MySQL ORDER BY Random” was beneficial to you. You can view EDUCBA’s recommended articles for more information.

  1. MySQL UNIQUE INDEX
  2. MySQL REGEXP
  3. Natural Join in MySQL
  4. MySQL Index

Primary Sidebar

Footer

Follow us!
  • EDUCBA FacebookEDUCBA TwitterEDUCBA LinkedINEDUCBA Instagram
  • EDUCBA YoutubeEDUCBA CourseraEDUCBA Udemy
APPS
EDUCBA Android AppEDUCBA iOS App
Blog
  • Blog
  • Free Tutorials
  • About us
  • Contact us
  • Log in
Courses
  • Enterprise Solutions
  • Free Courses
  • Explore Programs
  • All Courses
  • All in One Bundles
  • Sign up
Email
  • [email protected]

ISO 10004:2018 & ISO 9001:2015 Certified

© 2025 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA
Free Data Science Course

Hadoop, Data Science, Statistics & others

By continuing above step, you agree to our Terms of Use and Privacy Policy.
*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

EDUCBA Login

Forgot Password?

🚀 Limited Time Offer! - 🎁 ENROLL NOW