# 1.10 从表中随机返回n条记录

问题：

从表中获取特定数量的随机记录

解决方案：

利用top子句与order by newid()配合，实现从表中获取N条随机记录

```
select top 5 ename,job from emp order by newid();
```

【说明】

在MSSQL中函数newid()：

1. newid()函数产生一个全球唯一的标识，该标识是由网卡号、CPU时钟组成，从而保证该函数调用的返回值是唯一的。
2. 该函数的返回值类型为uniqueidentifier类型，该类型必须与newid函数配合使用。

newid函数的用途：

&#x20;正是由于uniqueidentifier的唯一性，我们通常用uniqueidentifier类型作为表的主键类型，通过newid函数为该类型字段新增或者更新值。

【举例】

```
create table test
(
	id uniqueidentifier primary key,
	name varchar(20)
)
```

插入新的数据：

```
insert into test values (newid(),'张三');
```

查询数据：

```
select * from  test;
```

结果：

![](https://3748388522-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MRjpdT6PYM3zgtBC3PD%2F-Mdb_atPhLJj2dSL5978%2F-MdbahD4sFUQTS5_BwXf%2Fimage.png?alt=media\&token=2c676dbb-caba-4525-bc70-f96f64ebdb20)

###
