公司每天会产生3000多条的数据。要求在这3000多条数据中随机选取100数据,将该100条数据的Merchant字段由000变成111,只要求修改当天的,以为的数据不需要修改,求指令!谢谢!我的数据库表名为:Record 时间字段:time   要修改的字段:Merchant 

解决方案 »

  1.   

    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())
      

  2.   

    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
      

  3.   

    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