关于随机选取数据的解决方案--集思广益!
--需求:
--现在想编制一段可以实现随机选取数据的程序,可以是函数,
--也可以是存储过程,或者其他;
1.执行时,给定一个变量,比如 @count=3(表示需要随机选取出3条记录,依此类推);
2.筛选出的记录不能重复;
3.如果返回记录为0条时,给出提示:"请再次执行程序!"或者其他;
提请讨论,请各位达人不吝赐教!!!
下面是模拟数据环境:
--关于随机选取数据的解决方案(示例):
--建立模拟数据环境:
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'T1')
DROP TABLE T1
GO
--提取参与者的主要数据,插入记录到表 T1 中;
CREATE TABLE T1(
[身份证号码] CHAR(20) PRIMARY KEY NOT NULL,
[姓名] CHAR(10) NOT NULL,
)
GO
INSERT T1 SELECT '532923800618008','左某'
UNION ALL SELECT '532920740506001','张某'
UNION ALL SELECT '532924930930002','杨某'
UNION ALL SELECT '532933590515003','赵某'
UNION ALL SELECT '532922900614005','林某'
UNION ALL SELECT '532901850101004','段某'
UNION ALL SELECT '532656880101006','郭某'
UNION ALL SELECT '532922900614007','江某'
UNION ALL SELECT '532920740506011','刘某'
UNION ALL SELECT '532920740506021','陈某'
UNION ALL SELECT '532901850101024','王某'
UNION ALL SELECT '532901850101031','叶某'
UNION ALL SELECT '532656880101002','彭某'
UNION ALL SELECT '532656880101001','李某'
GO
--现在给出模拟数据如下:
SELECT * FROM T1
/*
结果集如下:
身份证号码 姓名
-------------------- ----------
532656880101001 李某
532656880101002 彭某
532656880101006 郭某
532901850101004 段某
532901850101024 王某
532901850101031 叶某
532920740506001 张某
532920740506011 刘某
532920740506021 陈某
532922900614005 林某
532922900614007 江某
532923800618008 左某
532924930930002 杨某
532933590515003 赵某
(所影响的行数为 14 行)
*/
PS:我曾经尝试过用 RAND() 函数,可是还存在一些问题!自己还是菜鸟啊!