随机排名前50行

时间:2014-03-05 07:53:18

标签: sql sql-server

我想将表格中的50行更新为当前日期。 我知道如何选择50个随机结果,但我不知道如何更新它们。

这就是我对Select代码所拥有的:

SELECT TOP 50[ID]
      ,[Message]
      ,[Date]
      ,[Type]
      ,[Username]
FROM [database].[dbo].[dbTable]
ORDER BY NEWID()

如果我是正确的,这将获得50个随机行。

首先我刚刚更新了前50个,但我想从我的数据库中获取一些随机值。

update top(50) dbTable
set date=getdate()

我不想弄乱数据库,因为我今天无法访问备份。

如果有什么不清楚或有什么请问我!

3 个答案:

答案 0 :(得分:1)

试试这个

UPDATE [database].[dbo].[dbTable] Set [Date] = GetDate() where [ID] IN
(
    SELECT TOP 50 [ID] FROM [database].[dbo].[dbTable] ORDER BY NEWID()
)

其他:

WITH    q AS
        (
         SELECT TOP 50[ID]
              ,[Message]
              ,[Date]
              ,[Type]
              ,[Username]
         FROM [database].[dbo].[dbTable]
         ORDER BY NEWID()
        )
UPDATE  q
SET     [Date] = GetDate()

答案 1 :(得分:1)

试试这样:

update [dbo].[dbTable] set date=getdate() where Id in
(
    select top 50 id from dbo.dbTable order by NEWID()
)

答案 2 :(得分:1)

单独

TOP 50不会让你随机排。有一种方法可以在sql-server中获取随机行。您可以将其与UPDATE查询结合使用。

随机行:

SELECT TOP 50 ID FROM [database].[dbo].[dbTable] ORDER BY NEWID();

应用于UPDATE查询:

UPDATE [database].[dbo].[dbTable]
SET Date = GETDATE()
WHERE ID IN( SELECT TOP 50 ID FROM [database].[dbo].[dbTable] ORDER BY NEWID() );