【发布时间】:2013-01-12 17:53:03
【问题描述】:
我使用的是SQL Server 2008,我想选择随机行记录,记录的总数取决于另一个表的列值,该怎么做?
我的SQL语句是这样的,但是错了..
select top b.number a.name, a.link_id
from A a
left join B b on b.link_id = a.link_id
order by newid()
这是我的表格和预期结果。
表 A:
name link_id
james 100
albert 100
susan 100
simon 101
tom 101
fion 101
表 B:
link_id number
100 2
101 1
预期结果:
-
第一次运行时,结果可能是:
name link_id james 100 susan 100 fion 101 -
第二次结果可能是:
albert 100 susan 100 simon 101 -
第三次可能是:
james 100 albert 100 fion 101
解释
参考表B,link_id:100,编号:2
意味着表A应该为link_id = 100选择2个随机记录
并且需要为link_id=101选择1条随机记录
【问题讨论】:
-
我无法从描述和提供的示例数据中弄清楚,并查询 [Table B].number 与此相关。除了选择它之外,你的意思是对数字做任何事情吗?
-
@DWright:
b.number是TOP的参数,而不是SELECT。 -
@Quassnoi:有帮助的澄清!
-
@heng heng - 你已经给出了 2 个漂亮的解决方案。我当然希望你能接受。
标签: sql-server select random