步步为营:SQLServer查询随机不相同的记录插入临时表

本文探讨了在SQL环境中,如何通过动态生成SQL语句来实现数据抽取与更新的高效策略,包括创建临时表用于随机记录抽取,以及利用条件判断避免重复插入数据,确保数据集的准确性和完整性。
DECLARE @Num VARCHAR(max)
DECLARE @SQL VARCHAR(max)
SET @Num = '1'
 
IF NOT EXISTS (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..##TABLE') and type='U')
BEGIN
    SET @SQL = 'SELECT top ' + @Num + ' id,Realname INTO ##TABLE FROM Edu_Users ORDER BY NEWID()'
    PRINT @SQL
    EXEC(@SQL)
    --SELECT top 1 id,Realname INTO ##TABLE FROM Edu_Users ORDER BY NEWID()
END
ELSE
BEGIN
    SET @SQL =    'INSERT INTO ##TABLE(id,Realname) SELECT TOP ' + @Num + ' id,Realname FROM Edu_Users WHERE NOT EXISTS(SELECT 1 FROM ##TABLE WHERE id=Edu_Users.id) ORDER BY NEWID()'
    PRINT @SQL
    EXEC(@SQL)
    --INSERT INTO ##TABLE(id,Realname) SELECT TOP 1 id,Realname FROM Edu_Users WHERE NOT EXISTS(SELECT 1 FROM ##TABLE WHERE id=Edu_Users.id) ORDER BY NEWID()
END

首先判断临时表是否存在.

不存在就执行SELECT INTO 随机记录

如果存在就执行INSERT INTO SELECT随机记录并且不重复 

转载于:https://www.cnblogs.com/79039535/archive/2012/07/20/2600935.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值