SQL 从 SQL Server 表中随机选择 n 行

SQL 从 SQL Server 表中随机选择 n 行

在本文中,我们将介绍如何从 SQL Server 表中随机选择 n 行数据。通常情况下,我们使用 SQL 的 SELECT 语句从表中获取数据,但是如何在结果中随机选择一定数量的行呢?下面我们将讨论三种方法来解决这个问题。

阅读更多:SQL 教程

方法一:使用 NEWID() 函数和 TOP 子句

在 SQL Server 中,可以使用 NEWID() 函数生成随机的唯一标识符。我们可以利用这个函数和 TOP 子句来获取随机的 n 条记录。

SELECT TOP n * 
FROM your_table_name
ORDER BY NEWID()

这个查询先从表中获取所有的记录,然后通过 NEWID() 函数对记录进行随机排序,最后返回排序后的前 n 条记录。这种方法简单有效,适用于大多数情况。

方法二:使用 TABLESAMPLE 子句

SQL Server 提供了 TABLESAMPLE 子句,可以从表中随机获取一定比例的记录。我们可以结合 TOP 子句使用 TABLESAMPLE 来获取 n 条随机记录。

SELECT * 
FROM your_table_name 
TABLESAMPLE (n ROWS)

这个查询使用 TABLESAMPLE 子句获取表中的 n 条行,返回结果是随机的。需要注意的是,由于 TABLESAMPLE 是基于页的抽样方式,所以在大多数情况下得到的结果可能不是完全随机的。

方法三:使用 RAND() 函数和 ROW_NUMBER() 函数

另一种获取随机记录的方法是使用 RAND() 函数和 ROW_NUMBER() 函数的组合。RAND() 函数返回一个随机数,使用 ROW_NUMBER() 函数来给每行数据分配一个编号。我们可以将这两个函数结合使用,然后筛选出前 n 条记录。

SELECT * 
FROM 
  (SELECT *, ROW_NUMBER() OVER (ORDER BY RAND()) AS rn 
  FROM your_table_name) AS t 
WHERE rn <= n

这个查询中,内部查询使用 ROW_NUMBER() 函数为每行数据分配一个序号,然后按照 RAND() 函数生成的随机数进行排序。最后,外部查询根据序号筛选出前 n 条记录。

需要注意的是,当表中的数据量非常大时,这种方法的性能可能会较差。

总结

本文介绍了从 SQL Server 表中随机选择 n 行数据的三种方法。根据实际情况选择合适的方法来获取随机记录。如果数据量较小,推荐使用第一种方法,即使用 NEWID() 函数和 TOP 子句。如果想要更精确的控制抽样比例,可以使用 TABLESAMPLE 子句。如果数据量较大,可以尝试使用 RAND() 函数和 ROW_NUMBER() 函数的组合。无论选择哪种方法,都能从 SQL Server 表中获取所需的随机记录。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程