我有2個表格:Persons(idPerson INT)
和Questions(idQuestion INT)
。SQL隨機在加入表中排序
我希望將數據插入到第三臺:OrderedQuestions(idPerson INT, idQuestion INT, questionRank INT)
我要分配所有的問題,所有的人,但在一個隨機順序。
我想過做一個CROSS JOIN,但是後來,我得到了每個人的相同問題順序。
INSERT INTO OrderedQuestions
SELECT idPerson, idQuestion, questionRank FROM Persons
CROSS JOIN
(SELECT idQuestion,ROW_NUMBER() OVER (ORDER BY NEWID()) as questionRank
FROM Questions) as t
我該如何爲每個人實現這樣一個隨機的,不同的排序?
顯然,我希望解決方案儘可能快。 (它可以使用T-SQL或LINQ到SQL來完成)
3人期望的結果和5個問題:
idPerson idQuestion questionRank
1. 1 18 1
2. 1 14 2
3. 1 25 3
4. 1 31 4
5. 1 2 5
6. 2 2 1
7. 2 25 2
8. 2 31 3
9. 2 18 4
10. 2 14 5
11. 3 31 1
12. 3 18 2
13. 3 14 3
14. 3 25 4
15. 3 2 5
我剛纔編輯的結果(因爲ID是自動生成的,他們可以不會用於排序問題)。
我不認爲這是可能的與CROSS JOIN所以不要猶豫,嘗試不同的解決方案,使用CURSORS或任何東西! –
使用2'ORDER BY NEWID()'發佈答案的人接近,但使用180個問題和560個人,每個問題只分配8個不同的等級。 –