如何在纯SQL中请求随机列(或尽可能接近真正的随机列?)
我想从表中随机选择任意一列。
我在google上搜索过很多关于此事的内容。
答案 0 :(得分:1)
依赖于您的DBMS,目录看起来有点不同。对于mysql,您可以获得一个随机列,如:
select column_name
from information_schema.columns
where table_schema = ?
and table_name = ?
order by rand() limit 1;
然后将其合并到您的查询中。其他供应商的目录可能略有不同,但这个想法是一样的。
为什么要检索随机列?
答案 1 :(得分:1)
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'))
这可能对您有所帮助,它完成了SQL Server。 在这里,您随机选择一列表[DimProduct]
<强>结果1:强>
<强>结果2:强>
答案 2 :(得分:0)
您可以选择随机记录,但所有列都必须按名称引用,而不是位置。
你可以强制执行此操作的唯一方法是:
使用饼图SQL无法做到这一点。
答案 3 :(得分:0)
在Microsoft SQL中,您可以通过按随机数(NEWID
)对列进行排序来实现此目的:
SELECT TOP 1 c.column_name
FROM information_schema.columns c
WHERE table_name = 'your_table_name'
ORDER BY NEWID();