如何在SQL中请求随机列?

时间:2014-07-21 06:22:12

标签: sql random

如何在纯SQL中请求随机列(或尽可能接近真正的随机列?)

我想从表中随机选择任意一列。

我在google上搜索过很多关于此事的内容。

4 个答案:

答案 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:

enter image description here

<强>结果2:

enter image description here

答案 2 :(得分:0)

您可以选择随机记录,但所有列都必须按名称引用,而不是位置。

你可以强制执行此操作的唯一方法是:

  1. 获取所有列名称列表
  2. 随机选择一个列名称
  3. 使用选定的列名称
  4. 编写查询

    使用饼图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();