今天我一直在努力处理这一个SQL查询需求,我想知道是否有人可以帮助我。如何选择一列中唯一的一组随机记录?
我有一个运动问题表。其中一列是与问题相关的团队。我的要求是在团队独特的情况下返回一系列随机问题。
因此,可以说,我们有如下表,并希望5个问题:
Question Answer Team
-----------------------------------
question 1 answer 1 team A
question 2 answer 2 team B
question 3 answer 3 team B
question 4 answer 3 team D
question 5 answer 3 team A
question 6 answer 3 team C
question 7 answer 3 team F
question 8 answer 3 team C
question 9 answer 3 team G
question 10 answer 3 team D
有效的结果将返回:
question 1 answer 1 team A
question 2 answer 2 team B
question 4 answer 3 team D
question 6 answer 3 team C
question 7 answer 3 team F
我觉得这应该有可能做到这一点作为清洁SQL语句有一些聪明的使用Distinct和Take但我还没有能够把它正确的。
到目前为止最好的解决方案是从Mladen Prajdic。我刚刚稍微更新了一下,以提高它的随机性:
SELECT TOP 10 *
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY Team ORDER BY Team, NEWID()) AS RN, *
FROM Question
) teams
WHERE RN = 2
ORDER BY NEWID()
thanks..have以前从未使用PARTITION关键字。学到了新东西。我稍微更新了查询以改善随机性。 – 2009-01-19 23:02:58