2017-08-26 16 views
0

次のSQLクエリをMSで実行しようとしています。 SQL、 目的は一緒に両方のクエリと組合そこからランダムにレコードを選択することであるが、そのは、NEWID(BY ORDERでエラーを生成する)subject_id = 1NEWID()とUNION(MS SQLを使用)

組合

は3を選択したときに

は2つのランダムな質問を選択subject_id = 2のときのランダムな質問

(SELECT TOP 2 REC_ID, REF_ID, SUBJECT_ID, QUESTIONS, ANSWERS 
FROM   dbo.questions WHERE  (SUBJECT_ID= 1) ORDER BY NEWID()) 
UNION ALL  
(SELECT TOP 3 REC_ID, REF_ID, SUBJECT_ID, QUESTIONS, ANSWERS FROM 
dbo.questions WHERE  (SUBJECT_ID= 2) ORDER BY NEWID()) 
+0

[行のランダムなサブセットが奇数の結果を生成生成するCTEを有するNEWID()を使用]の可能な重複(https://stackoverflow.com/questions/17110816/using-newid-with-cte-to-produce -random-rows-produced-odd-resultsのサブセット) – Tanner

答えて

1

これを試してみてください。

SELECT * FROM 
(
    SELECT TOP 2 REC_ID, REF_ID, SUBJECT_ID, QUESTIONS, ANSWERS 
    FROM dbo.questions 
    WHERE SUBJECT_ID= 1 
    ORDER BY NEWID() 
) A 
UNION ALL 
SELECT * FROM  
(
    SELECT TOP 3 REC_ID, REF_ID, SUBJECT_ID, QUESTIONS, ANSWERS 
    FROM dbo.questions 
    WHERE SUBJECT_ID= 2 
    ORDER BY NEWID() 
) B 
関連する問題