如何用T-SQL“选择”随机记录
发布时间:2020-12-12 06:41:05 所属栏目:MsSql教程 来源:网络整理
导读:这是一个很难回答的简单问题,因为“挑
这是一个很难回答的简单问题,因为“挑选”具有特殊含义.
我需要为每个人提供三个随机选择(并给出选择/行号1,2和3).难以理解的是,这些人和选秀权来自不同的牌桌,并且这些人和选秀权之间没有逻辑联系. closest I can get是: SELECT TOP 15 database_id,create_date,RowNo,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 NEWID()) T ) cs 我知道以上不是人和选择,但它是一个工作的SQL,任何人都可以测试它而不创建人和首先选择表.和, 它说明了我面临的问题 – 上面的SQL会给每个人提供相同的选择,而我需要为不同的人提供不同的选择. 怎么做?谢谢. 解决方法在CROSS APPLY中添加相关条件将解决您的问题SELECT TOP 15 database_id,cs.NAME FROM sys.databases d CROSS apply (SELECT TOP 3 Row_number() OVER(ORDER BY (SELECT NULL)) AS RowNo,* FROM (SELECT TOP 3 NAME FROM sys.all_views v WHERE d.NAME = d.NAME --Here ORDER BY Newid()) T) cs 检查Where子句中的别名,LHS和RHS都来自同一个表,同一列只是为了对数据库表中的每一行执行子查询 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |