SQL:如何从一个表中为另一行中的每一行获取随机的行数
发布于 2021-06-04 16:52:42
我有两个数据无关的表对于表A中的每一行,我想要例如表B中的3个随机行
使用游标很容易,但是速度很慢
那么我如何在单个语句中表达这一点以避免RBAR?
关注者
0
被浏览
97
1 个回答
-
要获得介于0到(N-1)之间的随机数,可以使用。
abs(checksum(newid())) % N
这意味着要获得1-N的正值,您可以使用
1 + abs(checksum(newid())) % N
注意:
RAND()
不起作用-每个查询批处理一次,并且您在tableA的所有行都使用相同的值。查询:
SELECT * FROM tableA A JOIN (select *, rn=row_number() over (order by newid()) from tableB) B ON B.rn <= 1 + abs(checksum(newid())) % 9
(假设您希望每个A最多有9个B随机行)
推荐阅读
-
在SQL中从另一行减去一行数据
2021-02-02 关注 0 浏览110 1答案
-
选择从另一个表到结果行中每一行的计数
2021-04-20 关注 0 浏览82 1答案
-
为SQL表中的每一行切碎XML
2021-03-11 关注 0 浏览66 1答案
-
在SQL中,如何查找表中的每一行都等于一列,然后再设置另一列彼此相等,从而更新表的每一行
2021-05-10 关注 0 浏览90 1答案
-
关系表中的每一行记录称为一个( )。
2022-05-13 关注 0 浏览14 1答案
-
在表格的每一行中插入一个随机数
2021-04-09 关注 0 浏览60 1答案
-
SQL 如何去除表中的重复语句,只保留第一行数据?
2022-09-21 关注 0 浏览11 4答案
-
如何为表中的每一行运行特定的sql查询?
2021-03-12 关注 0 浏览76 1答案
-
如何在python中获取一行一行的MySQL ResultSet
2021-02-02 关注 0 浏览93 1答案
-
简单的Ajax Jquery脚本-如何获取表中每一行的信息?
2021-01-31 关注 0 浏览80 1答案