SQL Math Functions

SQL RAND / RANDOM: Generate Random Numbers and Select Random Rows

Generate random numbers and select random rows in SQL. Covers RAND (MySQL/SQL Server), RANDOM (PostgreSQL), DBMS_RANDOM (Oracle).

Mar 12, 20263 min read

Overview

Generate random numbers or select random rows from a table. Useful for sampling, testing, and randomized selection.

MySQL

-- Random decimal 0-1:
SELECT RAND();               -- 0.7234...

-- Random integer in range (1-100):
SELECT FLOOR(RAND() * 100) + 1;

-- Random row:
SELECT * FROM users ORDER BY RAND() LIMIT 1;

-- Random 10 rows:
SELECT * FROM users ORDER BY RAND() LIMIT 10;

-- Reproducible random (seed):
SELECT RAND(42);  -- always same result with same seed

PostgreSQL

-- Random decimal 0-1:
SELECT RANDOM();              -- 0.7234...

-- Random integer in range (1-100):
SELECT FLOOR(RANDOM() * 100 + 1)::INT;

-- Random row:
SELECT * FROM users ORDER BY RANDOM() LIMIT 1;

-- Faster for large tables — TABLESAMPLE:
SELECT * FROM users TABLESAMPLE SYSTEM(1);  -- ~1% of rows
SELECT * FROM users TABLESAMPLE BERNOULLI(5); -- ~5% of rows

-- Set seed for reproducibility:
SELECT SETSEED(0.42);
SELECT RANDOM();  -- reproducible

SQL Server

-- Random decimal 0-1:
SELECT RAND();                -- 0.7234...

-- Random integer (1-100):
SELECT FLOOR(RAND() * 100) + 1;

-- Random row (NEWID is better for per-row randomness):
SELECT TOP 1 * FROM users ORDER BY NEWID();

-- TABLESAMPLE:
SELECT * FROM users TABLESAMPLE (10 PERCENT);

-- Random per-row (RAND() is same for all rows in a query):
SELECT *, ABS(CHECKSUM(NEWID())) % 100 AS random_num FROM users;

Oracle

-- DBMS_RANDOM.VALUE:
SELECT DBMS_RANDOM.VALUE FROM DUAL;          -- 0 to 1
SELECT DBMS_RANDOM.VALUE(1, 100) FROM DUAL;  -- 1 to 100

-- Random row:
SELECT * FROM (
  SELECT * FROM users ORDER BY DBMS_RANDOM.VALUE
) WHERE ROWNUM = 1;

-- SAMPLE clause:
SELECT * FROM users SAMPLE(10);  -- ~10% of rows

Skip the Syntax Lookup

Instead of memorizing RAND / RANDOM syntax for each database, describe what you need in plain English and let AI2SQL generate the correct query.

Try AI2SQL Free

No credit card required

Frequently Asked Questions

How do I select a random row in SQL?

MySQL: ORDER BY RAND() LIMIT 1. PostgreSQL: ORDER BY RANDOM() LIMIT 1. SQL Server: TOP 1 ORDER BY NEWID(). For large tables, use TABLESAMPLE instead.

Is ORDER BY RAND() slow?

Yes, for large tables it sorts every row. Use TABLESAMPLE (PostgreSQL/SQL Server) or a WHERE clause with a random ID range for better performance.

Can AI2SQL generate random sampling queries?

Yes. Say 'get 10 random users' and AI2SQL generates the most efficient random selection for your database.

Generate SQL from Plain English

Stop looking up syntax. Describe what you need and AI2SQL writes the query.

Try AI2SQL Free

No credit card required