相关疑难解决方法(0)

获取 ROW NUMBER 条随机记录

对于像这样的简单 SQL,

SELECT top 3 MyId FROM MyTable ORDER BY NEWID()
Run Code Online (Sandbox Code Playgroud)

如何向它们添加行号,使行号变为1,2,3?

更新:

我以为我可以像上面那样简化我的问题,但事实证明它更复杂。所以这里是一个更完整的版本——我需要MyTable为每个人提供三个随机选择(来自 ),选择/行号为 1、2 和 3,并且人和选择之间没有逻辑连接。

SELECT * FROM Person
LEFT JOIN (
  SELECT top 3 MyId FROM MyTable ORDER BY NEWID()
) D ON 1=1
Run Code Online (Sandbox Code Playgroud)

上述 SQL 的问题是,

  • 显然,应该添加1、2、3的选/行号
  • 不明显的是,上面的 SQL 会给每个人相同选择,而我需要给不同的人不同的选择

下面是一个用于测试它的有效 SQL:

SELECT TOP 15 database_id, create_date, cs.name FROM sys.databases
CROSS apply ( 
  SELECT top 3 Row_number()OVER(ORDER BY (SELECT NULL)) AS RowNo,*
  FROM (SELECT top 3 name from sys.all_views ORDER BY …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

0
推荐指数
1
解决办法
6470
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1