在MySQL和SQL Server中,都有提供随机函数来生成随机数或从数据集中随机选择记录。这些函数在不同的数据库管理系统中可能会有不同的名称和用法。
MySQL的随机函数
RAND()
- **作用**:生成一个0到1之间的随机浮点数。
- **示例**:`SELECT RAND();`
FLOOR(RAND() * X)
- **作用**:生成一个1到X之间的随机整数。
- **示例**:`SELECT FLOOR(RAND() * 10);` // 生成1到10之间的随机整数
ORDER BY RAND()
- **作用**:用于随机排序查询结果。
- **示例**:`SELECT * FROM table_name ORDER BY RAND();`
SQL Server的随机函数
RAND()
- **作用**:生成一个0到1之间的随机浮点数。
- **示例**:`SELECT RAND();`
FLOOR(RAND() * X)
- **作用**:生成一个1到X之间的随机整数。
- **示例**:`SELECT FLOOR(RAND() * 10);` // 生成1到10之间的随机整数
NEWID()
- **作用**:生成一个独特的GUID(全局唯一标识符)。
- **示例**:`SELECT NEWID();`
ORDER BY NEWID()
- **作用**:用于随机排序查询结果。
- **示例**:`SELECT * FROM table_name ORDER BY NEWID();`
需要注意的是,使用`ORDER BY RAND()`或`ORDER BY NEWID()`在大型数据集上进行随机排序可能会对性能产生负面影响,因为这些操作会强制数据库对所有记录进行完全排序。在实际应用中,如果需要高效的随机抽样,可能需要使用其他策略,如使用中间表、临时表或特定的算法来实现。
下面是个人学习记录,以备忘,不喜勿喷,
1、mysql 代码:
select name, id from sys_info order by rand() limit 5
2、sql server代码:
select top 5 name,id
from sys_info order by newId()