今天我一直在努力處理這一個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