对于像这样的简单 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 的问题是,
下面是一个用于测试它的有效 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)