Search code examples
sqldatabaserandom

How to randomly select rows in SQL?


I am using MSSQL Server 2005. In my DB, I have a table customerNames which has two columns Id and Name and approx. 1,000 results.

I am creating a functionality where I have to pick 5 customers randomly every time.

Can anyone tell me how to create a query which will get random 5 rows (Id and Name) every time when query is executed?


Solution

  • SELECT TOP 5 Id, Name FROM customerNames
    ORDER BY NEWID()
    

    That said, everybody seems to come to this page for the more general answer to your question:

    Selecting a random row in SQL

    Select a random row with MySQL:

    SELECT column FROM table
    ORDER BY RAND()
    LIMIT 1
    

    Select a random row with PostgreSQL:

    SELECT column FROM table
    ORDER BY RANDOM()
    LIMIT 1
    

    Select a random row with Microsoft SQL Server:

    SELECT TOP 1 column FROM table
    ORDER BY NEWID()
    

    Select a random row with IBM DB2

    SELECT column, RAND() as IDX 
    FROM table 
    ORDER BY IDX FETCH FIRST 1 ROWS ONLY
    

    Select a random record with Oracle:

    SELECT column FROM
    ( SELECT column FROM table
    ORDER BY dbms_random.value )
    WHERE rownum = 1
    

    Select a random row with sqlite:

    SELECT column FROM table 
    ORDER BY RANDOM() LIMIT 1