求SQI修改指令,谢谢!

huangdazhe 2019-01-31 01:50:19
公司每天会产生3000多条的数据。要求在这3000多条数据中随机选取100数据,将该100条数据的Merchant字段由000变成111,只要求修改当天的,以为的数据不需要修改,求指令!谢谢!我的数据库表名为:Record 时间字段:time 要修改的字段:Merchant
...全文
219 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2019-02-08
  • 打赏
  • 举报
回复
UPDATE T SET Merchant='111'   FROM (SELECT *,ROW_NUMBER()OVER(ORDER BY NEWID()) AS RN FROM Record WHERE Merchant='000' WHERE FORMAT([time],'yyyyMMdd')=FORMAT(GETDATE(),'yyyyMMdd')) AS T WHERE RN<=100
吉普赛的歌 版主 2019-02-01
  • 打赏
  • 举报
回复
贴错了, 忽略, 不好意思
吉普赛的歌 版主 2019-02-01
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('dbo.[t]') IS NOT NULL 
	DROP TABLE dbo.[t]
GO
CREATE TABLE dbo.[t](
[学生id] int
,[班级id] VARCHAR(10)	
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[t] VALUES(N'1',N'101')
INSERT INTO dbo.[t] VALUES(N'2',N'101')
INSERT INTO dbo.[t] VALUES(N'3',N'101')
INSERT INTO dbo.[t] VALUES(N'4',N'101')
INSERT INTO dbo.[t] VALUES(N'5',N'102')
INSERT INTO dbo.[t] VALUES(N'6',N'102')
INSERT INTO dbo.[t] VALUES(N'7',N'201')

SELECT * FROM (
 SELECT ROW_NUMBER() OVER (PARTITION BY [班级id] ORDER BY NEWID()) AS rid,* FROM t
) AS tt
WHERE tt.rid=1
唐诗三百首 2019-02-01
  • 打赏
  • 举报
回复
Record需有主键字段, 设Record表主键字段是id, 修改的SQL如下,

update Record
set Merchant='111'
where id in (select top 100 id
from #t
where [time]>=cast(convert(varchar,getdate(),23)+' 00:00:00' as datetime)
and [time]<cast(convert(varchar,dateadd(d,1,getdate()),23)+' 00:00:00' as datetime)
order by newid())

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧