Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to request a random column in SQL?

Tags:

sql

random

How can I request a random column (or as close to truly random as is possible) in pure SQL?

I want to select any one column randomly from a table.

I have searched lot regarding this on google.

like image 286
Prikshit Avatar asked Nov 01 '22 20:11

Prikshit


2 Answers

Dependent on your DBMS the catalogue looks a bit different. For mysql you could get a random column like:

select column_name 
from information_schema.columns 
where table_schema = ? 
  and table_name = ? 
order by rand() limit 1;

and then incorporate that into your query. Other vendors may have a slightly different look of the catalogue, but the idea will be the same.

Why do you want to retrieve a random column?

like image 55
Lennart Avatar answered Nov 15 '22 06:11

Lennart


USE [AdventureWorksDW2012]
GO

DECLARE @SQL VARCHAR(MAX)

SELECT  [name]
FROM    sys.columns C WHERE C.object_id = OBJECT_ID('DimProduct')
AND     C.column_id = (
SELECT  ((ABS(CHECKSUM(NEWID()))% COUNT(*)) + 1)
FROM    sys.columns C 
WHERE   C.object_id = OBJECT_ID('DimProduct'))

This may help you, It is done with SQL Server. Here you are randomly selecting a column of table [DimProduct]

Result1:

enter image description here

Result2:

enter image description here

like image 26
Jithin Shaji Avatar answered Nov 15 '22 06:11

Jithin Shaji